面向对象——封装、继承、多态

封装(javaBean)
把对象的属性和方法结合为一个整体,并尽可能隐藏内部实现细节
(1)隐藏内部实现细节,提供公共访问方式
提高了代码的复用性及安全性
private是封装的一种体现

class Animal{
//private进行限制
private String name
/在封装中要存在一个无参构造,不然有时候外部调用会报错
public Animal(){
}
public Animal(String name){
this.name=name;
}
//提供get/set方法
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}

继承 (子类 Extends 父类 )
父类、超类、基类
子类、派生类
继承的本质在于抽象,类是对对象的抽象,继承是对一批类的抽象,对成员加以修饰符限制达到目的,可以减少代码的复用性

修饰符		内部类	同一个包		子类	任何地方
privte		可以
default		可以	可以
protected	可以	可以		可以
public		可以	可以		可以	可以

方法的重写(Override)
当父类的方法已经不能满足子类的需求了,但是子类又要用父类的这个功能,可以重写父类的方法

class Animal{
public void run{
System.out.println("动物会跑");
}
}

class Dog Extends Animal{
public void run{
System.out.println("狗飞速的奔跑");
}
}

注意:
重写必须保证子类与父类的方法名、形参列表保持一致,返回值类型及抛出的异常类型要小于或等于父类的,访问修饰符权限要大于或等于父类的
静态的方法不回重写,如果子类中有,必须为静态
final修饰的方法不能被重写
私有方法不会重写

super关键字
super代指父类对象,当子类方法中有与父类重名的局部变量时,为了调用父类中的属性,需要用super.属性来调用,不然就近原则就是本方法中的。
在子类的构造方法中,必须要用super()来调用父类的构造,且必须写在首行,子类中时无参构造,super()被省略
super和this都不能在static方法中

多态(Polymorphism)
多态就是一个对象具有多种表现形式,例如:一个人,他有名字,年龄什么属性吧,但他在家里就是爸爸(儿子),在社会上时工人,在学校他是学生,具有多重表现形式,这就是多态。

class Person{
int name;
}
class Student exdends Person {

}
public static void main(String [] args){
Person p = new Student();   // 父类引用指向子类对象--多态
}

使用多态的前提:
存在继承和方法重写
多态的优点:
1.减少代码间耦合
2.扩充性好
多态用于形参类型时,可以接收更多的数据
多态用于返回值时,可以返回更多的数据
注意细节

1.多态情况下,子父类存在同名的成员变量时,访问的是父类的成员变量
2.多态情况下,子父类存在同名的静态成员方法时,访问的是父类的方法
3.多态情况下,子父类存在同名的非静态方法时,访问的是子类的方法
4.多态情况下,不能访问子类中特有的成员

抽象类(abstract)
一个类被abstract修饰,为抽象类
一个方法被abstract修饰,为抽象方法,没有方法体

abstract class  A{
public abstract void  B();
}
class C implements A{
public void B(){
实现方法
}
}

抽象类注意的地方

1.如果一个类中有方法没有方法体,那么它必定被abstract修饰,他所在的类也是抽象类;
2.如果一个非抽象类继承了一个抽象类,那么必须实现所有抽象方法
3.不能被实例化,可以同时存在抽象与非抽象方法
4.抽象类中存在构造方法,是提供给子类初始化用的
5.不能与static、private、final一起修饰一个方法

接口(interface)
定义接口:

class interface 接口名{
}

实现接口

class A implements 接口名{
}

接口作用:
1.程序的解耦
2.制定约束规范
3.拓展需求功能

定义接口需要注意的地方

1.接口是一个特殊的类,它没有构造方法,不能被实例化
2.接口中定义的定义的变量默认加修饰符 public static final,也就是一个常量,必须赋值
3.接口中,方法默认被public abstract(抽象方法)
4.非抽象类实现接口,必须实现所有抽象方法
5.先继承后实现	 class A exdents B implements C
6.接口可以多继承多个接口,一个类可以实现多个接口
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值