Java学习--day3

面向对象高级
1、继承
(1)父类和子类关系及构造方法
Java只允许单继承,不允许多重继承,即一个子类只能有一个父类。子类不能直接访问父类的私有方法,可以通过setter、getter等方法间接访问。
子类在实例化的时候,先调用父类的构造方法,再调用自己的构造方法。super()调用父类无参构造(但必须放在子类构造的首行)。
(2)方法覆写
覆写即子类中定义了与父类同名的方法,但被子类覆写的方法的访问权限不能比父类的严格。
子类通过super.方法(),即可调用父类方法。
2、final关键字
(1)使用final声明的类不能有子类
(2)final声明的方法不能被子类所覆写
(3)final声明的变量即为常量,不能改变。并且声明的变量要求全部字母大写。public static final称为全局常量。
3、抽象类
定义规则:
①包含一个抽象方法的必须是抽象类
②抽象类和抽象方法都用abstract声明
③抽象方法只需声明不用实现(值得注意的一点是,抽象方法不能用private修饰,否则不能被覆写)抽象方法没有方法体,即没有{}
④抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法
因为final声明的类不能有子类,所以不会是抽象类。
4、接口
interface 接口名称{
全局常量;
抽象方法;
}
用implements关键字实现接口。
接口中的抽象方法必须为public。有时会省略public,但不管写不写都是public权限。所有方法必须是抽象方法。
接口中定义的常量可以省略public static final,默认的。接口的抽象方法前的public abstract也可以省略。
一个子类能实现多个接口,实际上专业就摆脱了Java单继承的局限性。一个接口也能继承多个接口。
5、抽象类和接口的比较
同:
  可以通过对象的多态性被实例化,再调用子类覆写的方法)
  都属于引用类型
异:
  抽象类可以有实例变量,接口只能有静态常量
  接口只能有抽象方法,抽象类可以有抽象方法也可以有普通方法
  向下:抽象类只能继承一个,接口可以实现多个
  向上:抽象类只能有一个父类(单一继承),接口可以有多个父接口(多重继承)
6、多态性
对象的多态性(非常重要)
①向上转型:子类对象-->父类对象(程序会自动完成)
父类 父类对象=子类实例
A父类,B子类
B b = new B();A a = b;//父类声明的对象去接受子类的实例对象
或者A a = new B();
如果对象发生了上转型,那么所调用的方法一定是被子类覆写过得方法,不能调用子类自己的方法(即不是覆写的方法)。
②向下转型父类对象-->子类对象(必须明确声明要转型的子类类型)
子类 子类对象=(子类)父类实例
A a = new B();//先上转型
B b = (B)a;//再下转型
向下转型可以调用被子类覆写的方法、父类的方法、子类自己的方法。
7、instanceof关键字
判断对象是否是该类的实例。可以在下转型之前,用instanceof判断是哪个子类的实例
8、工厂设计模式
工厂设计是Java开发中使用的最多的一种设计模式。
程序在借口和子类之间加入一个过渡端,用来取得接口的实例化对象。这个过渡段一般称为工厂类。
interface Fruit{
public void eat();
}
class Apple implementsof Fruit{
public void eat(){
System.out.println("吃苹果");
}
}
class Orange implementsof Fruit{
public void eat(){
System.out.println("吃橘子");
}
}
class Factory{
public static Fruit getInstance(String name){
Fruit f=null;
if("apple".equals(name)){
f=new Apple();
}
if("orange".equals(name)){
f=new Orange();
}
return f;
}
}
public class InterfaceDemo{
public static void main(String args[]){
Fruit f=null;
f=Factory.getInstance("apple")
f.eat();
}
}

9、代理模式
A和B都实现C接口,用B中的方法参数设为接口的对象去接收A的实例,通过上转型去实现A的方法。
10、适配器模式 (图形界面经常用到)
因为实现接口需要覆写接口的所有抽象方法,有时只用到几个。为了方便,需要定义一个抽象类去实现接口,抽象类中覆写所有方法但方法体都为空。再去继承这个抽象类实现要用的方法。那么这种中间的抽象类叫做适配器类。
11、Object类
Java所有的类都有一个公共的父类Object。
(1)toString方法
因此可以针对toString,进行覆写输出信息。(认为比较有用)。到时直接打印类对象的时候,会调用toString方法。
(2)equals方法
Object类默认的equals方法默认比较地址。String的equals方法之所以能比较内容,是因为它已经覆写过了。
因为Object类可以接收任意的引用数据类型,所以大部分都用Object作为方法的参数。
12、包装类
Integer i =30;自动装箱
int x=i;自动拆箱
实际开发中用的最多的是字符串(字符串必须由数字组成)变为基本数据类型的操作。
String str="30";
int x = Integer.parseInt(str);将数字组成的字符串变为数字









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值