this.name=name; this.dog=dog; } public void mydog() { System.out.println(this.dog.name); } }
class Dog { int age; String name; public Dog(int age,String name) { this.age=age; this.name=name; } }
类变量:static static int total=0;
total在所有实例化的对象中都是同样的,任何对象都可以改变total。
class People { int age; String name; Dog dog; static int total=0; public People(int age,String name,Dog dog) { this.age=age; this.name=name; this.dog=dog; total++; } }
第9讲 类方法、类变量、封装
1、类变量
类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是同一个值。修改也是修改了同一个值。
[访问修饰符] static 数据类型 变量名;
public class demo4 { static int i=0; static //静态局部块 { System.out.println('a'); i++; } public void talk() { i++; System.out.println('b'); System.out.println(i); } public static void main(String args[]) { demo4 d1=new demo4(); d1.talk(); demo4 d2=new demo4(); d2.talk(); } }
第10讲 继承
父类的哪些东西可以被子类继承?
父类只有private方法和属性不能被继承。 class People { int age; String name; String address;
public People(int age,String name,String address) { this.age=age; this.name=name; this.address=address; } }
class Student extends People { int grade; public Student(int age, String name, String address, int grade) { super(age, name, address); this.grade = grade; } }
方法重载overload:
同一个名字的类,不同的形参;
方法参数类型,个数,顺序至少有一个不同; 如果只是返回类型不一样,不能构成重载;
方法覆盖(重写)override
子类方法不能缩小父类的访问权限。
第11讲 约瑟夫问题
多态:就是指一个引用在不同情况下的多种状态。
多态是通过指向父类的指针,来调用在不同子类中实现的方法。
java允许父类的引用变量引用它的子类的实例(对象)。 Animal animal=new Cat();
第13讲 抽象类,接口
1、抽象类
当父类的一些方法不能确定时,可以用abstract来修饰该方法; 用abstract修饰方法的类也需要用abstract修饰,称为抽象类。
abstract class Animal { int age; abstract public void cry(); }
class Cat extends Animal { //必须实现abstract方法 public void cry() { // TODO Auto-generated method stub } }
注意:
(1)抽象类不能实例化;
(2)抽象类不一定包含abstract方法;
(3)一旦包含abstract方法,该类必须是abstract类; (4)抽象方法不能有主体。
2、接口
接口interface,被implements时必须实现interface中的所有方法。
interface USB{ public void start(); public void stop(); }
class Camera implements USB