标签:屏蔽 http 年龄 idt 问题 super animal out 运算
面向对象的三大基本特征
封装(封装方法)——代码复用,屏蔽细节。
继承extends(类与类之间的一种关系)——代码复用,功能上的拓展。当一个子类继承了父类,就自动拥有了父类的所有成员变量。一个子类只能有一个父类,一个父类可以有多个子类。
多态
一、封装
1、包:管理java软件,解决同名问题冲突,用不同的文件夹来区分不同的类,一般包名为小写
系统中的包:java.(功能).(类)
java.lang.类,常用的基础类,不需要导包即可使用。(唯一的一个)
java.io 输入输出流
java.net 网络编程
java.util 工具包
2、访问修饰符
private(私有)——只能在类的内部用
default(默认)——在同一个包下的类之间可以使用
protected(受保护的)——继承中可以互相调用,两个类不在同一个包下,若是继承关系可以调用
public(公共的)——两个类不在同一个包下,是不是继承关系都可以调用
3、内部类:定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
内部类的主要作用如下:
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
1、 内部类中定义的 方法可以直接访问 外部类中的数据,而不受访问控制符的影响
2、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
3、成员内部类也会生成 .class 文件,格式如下:外部类名$内部类名.class
4、 外部类是不能直接使用内部类的成员和方法
5、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,方法内部类不能使用访问控制符和 static 修饰符。
new IplayGame(){ IplayGame ip3 =new IplayGame(){
public void playGame(){ public void playGame(){
System.out.println("使用匿名内部类"); System.out.println("使用匿名内部类");
} }
}.playgame(); }
ip3.plalyGame();
二、继承
1、方法的重写,重写父类方法
语法规则:返回值类型,方法名,参数类型及个数与父类相同。
2、继承的初始化顺序
先初始化父类再初始子类
先初始化对象的属性,再执行构造函数的初始化
3、final关键字
修饰类,该类不允许被继承
修饰方法,则方法不允许被覆盖
修饰变量,则在声明时赋一次值,不允许改变(常量)
修饰属性,初始化属性必须有值,或在构造函数中赋值。(选一)
4、super关键字
相当于当前父类对象的引用;
this指向当前对象,super指向父类对象。
子类的构造过程中必须调用父类的构造方法。若未调用,则默认调用父类的无参构造方法
若子类构造方法中没显示调用父类,父类只定义了有参构造方法没有无参构造方法,则报错。需要在子类构造中手动调用父类的构造方法 super();!!!在子类第一行调用
当父类引用指向子类对象的时候不能使用子类中多出来的东西
重写的过程中,子类重写的方法需要调用父类被重写的方法的时候——super.方法名()
当子类的成员变量和父类的成员变量同名的时候,需要访问父类的成员变量——super.成员变量名
5、Object类:所有类的父类
toString()返回对象地址字符串;需重写 //source->Generate toString()
“==”比较的是对象的引用是否指向同一块地址(栈区的内容),比较对象需要用equals()方法 //source->Generate hashCode() and equals()
类对象 对象.getclass() //类的代码信息 姓名 年龄 。。。
类的对象 对象 //类的对象信息 张三 18 。。。
比较两个类的属性前应先转换成同一个类
三、多态
多态(一种方法有多种形态):动态绑定、池绑定
当程序执行的时候根据传入的参数决定绑定哪个方法。
条件:1)继承是多态的实现基础
2)要有方法的重写
3)要有父类的引用指向子类的对象。
引用多态:
父类的引用可以指向本类的对象 Animal obj1=new Animal();
父类的引用可以指向子类的对象 Animal obj2=new Dog();
方法多态:
创建本类对象时,调用的方法是本类方法
父类引用创建子类对象时,调用的方法为子类重写或继承的方法,不能调用子类自己特有的方法
引用类型转换:
向上类型转换(隐式/自动类型转换) 小类型到大类型的转换
向下类型转换(强制类型转换) 大类型到小类型的转换
instance of 运算符,解决引用对象类型,避免类型转换的安全问题
例:if(animals instance of Dog){
Dog dog2 = (Dog) animal;
}
抽象态:
abstract关键词修饰
只有声明不需要实现,以分号结束 例:public abstract void call();
四、接口
interface 只规定这些类里必须提供某些方法 不同类的相同特性
语法:修饰符(abstract) interface 接口名 [extends 父接口1,父接口2 ...]{
零到多个常量的定义 public static final //绿色字为系统自动
零到多个抽象方法的定义 public abstract
}
一般接口名前加“I”
继承父类实现接口的方法
[修饰符] class 类名 extends 父类 implements 接口1,接口2,,,{
}
要继承父类,则extends在implements之前
标签:屏蔽 http 年龄 idt 问题 super animal out 运算
原文地址:http://www.cnblogs.com/Lune-Qiu/p/7384161.html