java面向对象

静态(可继承)  和类一起存储在方法区

静态常量 public static final int ANIMAL_LEG=4;

静态变量 static String school;

静态代码块 static{...}

静态方法 public static void study(){...}  只能调用静态变量/方法

this(对象)不能调用静态

调用  类名.静态变量/方法  对象.静态变量/方法

 

构造方法 创建对象时调用 构造方法不能调用成员方法   

构造代码块 {...} 成员方法不能调用构造方法

无参构造 public 类名(){}        调用:new 类名();

有参构造 public 类名(String name, int age){

this.name=name;   // super(name); 调用父类有参构造

this.age=age;

}

私有构造 private public 类名(){}  不能创建对象(只能类调用静态方法)

运行时 (第一行)调用父类的无参/有参构造(不写 默认调用父类无参)

构造方法中如果先调用其他构造方法 间接先调用 父类的无参构造

this("张三",18):调用本类构造方法  super("张三"):调用父类构造方法

 

成员常量 final int num=10;

成员变量 String name;

private int age; 私有变量

成员方法 public void show(){...}

public void setAge(int age){this.age=age;}  私有变量 set方法

public int getAge(){return age;} 私有变量 get方法

[]继承 子类可以继承父类非私有的成员变量、成员方法

重写继承的成员变量、成员方法  权限>=父类权限

   public>不写(默认修饰符)>private

调用父类的 super.成员变量/方法

调用子类的this.成员变量/方法

 

抽象类 abstract class Animal{

成员变量、成员方法

抽象方法 [public abstract void eat();]  有抽象方法的一定是抽象类

}

private私有 ×无法继承

final ×无法重写

static静态 ×类.抽象方法(无方法体)

 

接口

public interface 接口{ 没有构造方法

public static final int num=10;  静态常量

public abstract void show();  抽象方法 无方法体

}

接口[]实现

class implements 接口1[,接口2]{

public void show(){...};     重写抽象方法

}

接口[]继承

interface 接口3 extends 接口1,接口2{...}

 

继承+实现

class 1 extends 2 implements 接口A, 接口B{...}

 

 

多态

父类型 对象名=new 子类型(); 方法参数为父类型 传入子类型

父类可以是:抽象类、接口 方法返回父类型  return子类型

对象.成员变量   调用父类成员变量  

对象.成员方法   调用子类重写的成员方法

对象.静态变量/方法 调用父类静态变量/方法(父类型.静态)

不能调用子类特有的变量/方法

 

向上转型:父类型  对象名 = new 子类型();

 

an instanceof Dog 对象an Dog类 的 实例(后代元素)true

向下转型:子类型 对象名 = (子类型) 父类型的子对象;

向下转型后 可调用子类特有的变量/方法

 

 

修饰符 访问权限:

public 本类中

不写: 同包下

protected 同包下/子类中

public 都能访问

 

注意:如果类用public修饰,则类名必须与文件名相同。

一个java文件中只能有一个public修饰的类。

 

this.xxx  调用子类的成员变量/方法

this(1)   调用子类其他构造方法   在子类的构造方法第一行

super.xxx 调用父类的成员变量/方法

super(1)  调用父类的构造方法   在子类的构造方法第一行

 

 

Student s = new Student();

new Student();          //匿名对象,没有名字的对象

new Student().study();  //匿名对象 调用方法/属性

method(new Student());  //匿名对象 作为参数

public static Student getStudent(){

return new Student(); //匿名对象 作为返回值

}

 

final修饰符,可以用于修饰类、成员变量/方法  不能修饰构造方法

final修饰类:不能被继承,不能有子类

final修饰方法:不能被重写

final修饰变量:是不可以修改的,是常量 要在创建对象(赋默认值)前赋值

 

final String name;

public Person(String name){

this.name=name; // 构造方法 赋值   创建对象前赋值  都不会报错

}

posted @ 2018-12-24 11:50  博客张C  阅读(142)  评论(0编辑  收藏  举报