JAVA学习1 面向对象编程
面向对象编程
面向对象编程三要素:封装,继承,多态
封装
封装是指将数据(属性)和操作数据的方法(行为)绑定在一起,形成一个独立的单元(即对象)。通过访问控制修饰符(如 private、protected、public),隐藏对象实现的内部细节,仅通过公共接口(如 getter 和 setter 方法)与外部进行交互。
优点:①提高安全性,防止外部代码随意修改内部属性 ②便于维护和扩展,隐藏实现细节 ③增强代码可重用性
public class Student {
private String name; // private表示私有属性,只能通过内部方法访问
private int age;
// 提供公共的数据设置接口(setter)和数据访问接口(getter)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) {
this.age = age;
}
}
}
u1s1,我始终认为古人是如此的惊世智慧,现在的数据封装总是能让我看到当年活字印刷术的灵感,以至于我在编程的时候总是莫名其妙将二者联系在一起,就像苯环结构的提出者梦里梦见了一条C链原子如同蛇一般头咬住了尾巴,尽管毕昇和图灵没啥关系
继承
继承方法通过extends关键字允许子类继承父类的属性和方法
// 父类
public class Animal {
protected String name;
public void eat() {
System.out.println(name + " is eating");
}
}
// 子类继承父类
public class Dog extends Animal {
public void bark() {
System.out.println(name + " is barking");
}
}
继承的特点:
①单继承:java是单继承模式,一个类只能继承一个直接父类
②多层继承:java不支持多继承(一个儿子两个爹),但支持多层继承(儿子→爹→爷爷)
③祖宗类:java所有类都是object的子类
③就近原则:优先调用自己类中的,没有才会去调用父类
多态
多态是在继承的基础之上的同一接口的不同实现,目的是实现代码复用和建立类之间的层次关系,通过@Override关键字完成方法复用
通过多态,实现了同一方法在不同对象上的不同实现。
public class Main {
public static void main(String[] args) {
Animal a = new Dog(); //多态特点,自动类型转换
Animal b = new Cat();
a.bark();
b.bark();
}
}
class Animal {
public void bark() {
System.out.println("Animal barks!");
}
}
class Dog extends Animal {
@Override
public void bark() {
System.out.println("Dog barks!");
}
}
class Cat extends Animal {
@Override
public void bark() {
System.out.println("Cat barks!");
}
}
输出如下:
Dog barks!
Cat barks!
有的时候我看多态设计会觉得很奇怪,我们明明可以的直接实现两个互不相干各干各的类,为什么非要设计一个父类然后再设计出两个子类?
后来我接触了一些东西,我们在设计代码实现项目的时候需要遵循很多原则,就像是我们小学的时候列方程习惯左边是未知数右边是已知常量一样。写代码的时候同样如此。
如果两个或者多个类中存在实现完全相同的属性或者方法,那么就应该向上在父类当中实现,从而提高代码的可维护性和扩展性(是的,牛逼的代码不止你一个人要写要用,就像英雄联盟现在的设计师去重做之前设计师用屎山代码做出来的狗屎英雄一样),具体的可以参考代码开发中面向对象程序设计需要遵循的SOLID五大原则以及程序设计的26种设计模式
SOLID原则
26种设计模式
是的,如果这不是两个类,而是100个类都实现了,那么这时候如果在100个类中都去实现我们的代码将过于冗余,而如果在一个公共的父类中统一实现并由子类调用,这将显得我们的代码更加高效简洁。

浙公网安备 33010602011771号