Java笔记07——面向对象

本文深入探讨了面向对象编程的四大特性:封装、继承、多态和抽象。封装是保护类的属性和方法,减少耦合;继承则提供了代码的延展性和重用性;多态允许同一方法根据对象类型表现出不同行为;抽象类和接口用于定义不完整或通用的结构。理解这些概念对于提升代码的灵活性和可维护性至关重要。
摘要由CSDN通过智能技术生成

面向对象特性

高级特性:封装,继承,多态,抽象

封装
1.类的本身就是一个封装体
//封装的思想
Children c = new Children();
c.name = " ";
2.方法也是封装体
A a =new A(); 封装计算机的功能
int result = a.add(2,6);//运算过程
System.out.println(result);
jar:已经封装的工具类,给别用我还不想让别人知道这个东西是怎么做的。使用:类名.方法。
注意:自己有一定基础,能自行封装一些功能了,就可以打jar包了。
封装(Encapsulation):在面向对象的设计方法中,将方法和属性等类的部分,部分进行包装、隐藏起来的思想叫封装。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问,要访问该类的代码和数据,必须通过严格的公共资源。适当的封装可以让程式码更容易理解和维护,复用,也加强了程式码的安全性。
优点:
1.良好的封装能减少耦合。
2.类内部的结构可以自由修改。
3.可以对成员变量进行更精确的控制,私有化了外界不能随便进入更改。
4.隐藏信息,实现细节。
继承
1.作用:就是为了让程序具有延展性,减少代码的冗余,让代码更简洁。
举例子:子承父业,儿子可以继承(拥有父亲的所有资源),在程序中也一样,一个类可以有一个父类。
2.extends关键字
注意:一个类只可以有一个父类(Java中的单继承),一个父类可以有多个子类。
在子承父业后,可以根据自己的需求,修改、重写父类中的方法或属性的值,在没有破坏父类代码的前提下,实现了子类自己独有的功能。
3.方法的重写,属性的覆盖。
在继承中,子类写了父类的方法,重写特点是方法名相同,参数列表相同(个数相同,顺序相同,类型相同),返回值相同。
注意:如果继承过多了,程序也不是特别的健壮,这样耦合度(连带关系型)很高,如果程序有一处休要修改,那么整个程序都会更新。在继承中,如果父类的属性是私有化的那么子类就获取不到了,如果非要获取到,就在父类中给私有化属性提供属性的访问器setter、getter方法,这样我们就可以通过人共调用功能方法来获取属性从而进行操作。
举例子:…Cat extends Pet …
这个Cat类继承了这个Pet类,所以Cat类就是Pet类的子类,Pet类就是Cat的父类,Cat类就继承了Pet类的所有公共资源。
4.继承器中的构造器
构造器的作用是创建当前类的对象,在Java中你只要创建一个类就一定有父类,根类为object也是万能类,它在Java体系中是所有类的父类,object类中的构造方法必须被子类调用,默认是super();所以说Java中的继承,其中构造方法不可以被继承。
拓展:this代表当前类的对象,super代表父类的对象。
注意:继承是将父类的所有公共资源进行继承,构造方法、游离块、静态块不可以被继承。
5.final关键字
1.能修饰属性:
final修饰的属性必须初始化,有两种初始化方式,一种是|–public final String = ”哈哈“,另一种是,|–public final int age ; public Person{ age = 2 ;}
2.能修饰方法:
final修饰方法不可以被重写
3.能修饰类:
final修饰的类不可以被继承被称为不可以改变类。
拓展:static final 一般被称为静态常量定义时变量都是大写的,例如:public static final int AGE = 23;目的是为了方便调用,有初始化值。
多态
字面意思:多种状态可以理解为多态。
定义:同一种事物的不同种表现形式。多态的前提是封装,继承打破了封装。
同一事物在程序中体现的是父类通过子类来单独表式。
程序中多态的表现形式
1.将父类作为方法的入参,具体是现实,传入具体的子类对象即可。

public void follow( Pet pet){
}

Cat cat = new Cat();
follow(cat);

Dog dog = new Dog();
follow(dog)

2.在创建对象时,体现多态的灵活性;
Pet pet = new Dog();
当我想要构建一个宠物时,不知道是什么宠物,就先具体一个宠物,然后再去new xxx();
注意:jvm虚拟机,在多态中定义了一些规范;
1.编译时类型:jvm虚拟机会将当前的pet定义成Pet类型,并且只允许调用父类的公有属性和方法,调用不了子类的独有属性和方法。如果想要调用就必须使用instanceof关键字进行判断,instanceof意思是判断这个对象是否是这个类型的父类。

if(pet instance Cat){
	Cat cat = (Cat)pet;
	cat.speak();
}

如果不判断的化,类型匹配时会出现一个异常:java.lang.ClassCastException: 类型转换异常。
2.运行时类型:jvm虚拟机会将当前的对象指向子类的类型,会按照子类中的覆盖属性,重写的方法进行执行。
抽象
1.抽象类是类的半成品
它是我们在编写程序时,一时间考虑不到所有的具体实现,有可能只是有想法,这时候,我们的类在定义时就不是具体的,有可能一半是没有实现的,一般是实习的,这样的类会被定义为抽象类。
特点:必须用abstract关键字修饰,抽象类中可以都是普通方法,可以是抽象方法,也可以一半是普通方法一半是抽象方法。
存在的意义:从程序设计层面考虑问题,但是必须有实现他的类,所以它存在就是为了被继承的。
抽象类中的构造器:它存在的意义是为了给子类调用,它是不可以new对象的。
普通类在继承抽象类时必须重写它的方法,抽象类可以重写,可以不重写。抽象类可以继承普通类。

public class B{
}
public abstract class A{
	//抽象类中可有普通方法;有方法体的方法;
	//也可以抽象方法,没有方法体
}

接口
1.接口是完全抽象,直接按照程序的设计层面考虑。抽象类是半抽象。
语法结构:
public interface 接口名{
}
接口中没有具体方法,都是抽象方法,可以省略abstract关键字,没有构造器,不能创建对象,可以有属性但是必须是静态常量。
类和类是继承关系,类和接口的关系是实现关系implements,一个类可以实现多个接口,接口和接口之间继承关系,接口支持多继承。

仅用于个人学习总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值