目录
面向对象
一.继承
1.1 object
1.3 方法的重写override
1.4 instanceof 运算符
1.5 final 关键字
1.6 tostring方法
1.7 ==和equals方法
二.组合
面向对象
一.继承
关键字“extends”的意思是“扩展”,子类是父类的扩展。
class anmail{ int ages; String name;}class dogs extends anmail{ public void jiao(){ System.out.println("汪汪汪!!!"); } public dogs(int ages,String name){ this.ages=ages; this.name=name; }
1.1 object
object 是Java的根基类,也就意味着所有的Java对象都拥有object类的属性和方法。如果在类的声明中未使用extends关键字指明其父类,其默认继承object类。
class anmail extends Object{ int ages; String name;}
注:子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如,父类的私有属性和方法)。
1.3 方法的重写override
方法的重写需要符合下面的三个要点:
1.“==”:方法名和形参列表相同。
2.“<=":返回值类型和声明异常类型,子类小于等于父类。
3.“>=”:访问权限,子类大于等于父类。
1.4 instanceof 运算符
instanceof是二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true,否则,返回false。
public class test { public static void main(String[] args) { dogs d=new dogs(1,"doudou"); dogs p=new dogs(1,"doudou"); System.out.println(d instanceof dogs); System.out.println(d instanceof anmail); }
d时dogs的对象,dogs是anmail的子类。
1.5 final 关键字
final 关键字的作用:
1.修饰变量:被它修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
final int MAX=11;
2.修饰方法:该方法不可被子类重写。但是可以被重载。
final void study(){}
3.修饰类:修饰的类不能被继承。
final class A{}
final class anmail { int ages; String name;}class dogs extends anmail{ public void jiao(){ System.out.println("汪汪汪!!!"); } public dogs(int ages,String name){ this.ages=ages; this.name=name; }
1.6 tostring方法
源码:
public String toString(){ return getClass().getName()+"@"+Integer.toHexString(hashCode());}
class dogs { anmail d=new anmail(); public void jiao(){ System.out.println("汪汪汪!!!"); } public dogs(int ages,String name){ this.ages=ages; this.name=name; } public String toString(){ return name+"年龄:"+ages; }}
1.7 ==和equals方法
public class test { public static void main(String[] args) { dogs d=new dogs(1,"doudou"); dogs p=new dogs(1,"doudou"); System.out.println(d==p);//对象不同,返回false System.out.println(d.equals(p));//名字相同 返回true }
二.组合
组合是继承的另一种表达方式。
class anmail { int ages; String name;}class dogs { anmail d=new anmail();