Java基础知识学习06-封装、继承

封装

概念:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问。

特点:提高代码的复用性;

           隐藏类的实例细节,方便修改和实现;

           提高代码的安全性。

实现步骤:修改属性的可见性------>设为private

                 创建getter/setter方法--------->用于属性的读写

                 在getter/setter方法中加入属性控制语句---------->对属性值的合法性的判断

private修饰符

private关键字:私有的,可修饰成员变量和成员方法

              特点:只能在本类中访问被private修饰的成员

代码:

package com.oracle.demo3;
public class Person {
private String name;
private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public boolean compare(Person p) {
return this.age == p.age;
}
}

测试代码:

package com.oracle.demo3;
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.setAge(18);
p1.setName("张三");
p2.setAge(18);
p2.setName("李四");
boolean flag = p1.compare(p2);
if(flag){
System.out.println("两个人年龄相同");
}else{
System.out.println("两个人年龄不相同");
}
}
}

this关键字

this关键字代表当前对象   本类中

   this.属性   操作当前对象的属性

   this.方法   操作当前对象的方法

成员变量和局部变量的同名问题:

可以在成员变量名前面加上this.来区别成员变量和局部变量

继承

 继承是类与类之间的一种关系,可以说是一种 is  a  的关系     把多个类中相同的内容提取到一个类中。

继承的好处:

                子类拥有父类所拥有的属性和方法;

                实现了代码的复用。

弊端:增强了类与类之间的耦合性。因为开发要求是高内聚低耦合的。

语法规则: class  子类 extends 父类{}

注意:1、Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类

      2、多个类可以继承一个父类

          3、Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类

      4、Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类

继承中成员变量的特点:

成员变量:如果子类父类中出现不同名的成员变量,这时的访问是没有任何问题。

          如果子类父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成。super用来表示当前对象中包含的父类对象空间的引用。

继承中成员方法的特点:   就近原则

     子类中的方法和父类中的方法声明是一样的;

      通过子类调用方法:先找子类中有没有这个方法,有就调用。子类中没有就看父类,有就调用。父类中还没有就再接着找,如果没有就报错。

方法的重写

如果子类对父类中的方法不满意可以重写父类的方法,直接在子类中去写,调用的时候会优先调用子类中的方法。

语法规则:返回值类型、方法名、参数类型及个数都要与父类相同。

          重写的方法直接在子类中去写,然后用super关键字去调用父类中的方法。

注意:1、父类中私有方法不能被重写,因为父类的私有方法子类根本不能去继承;

      2、子类重写父类中的方法时,访问权限不能更低;

      3、父类的静态方法,子类必须通过静态方法才能重写。

方法的重载

在本类中出现的方法名一样,参数列表不同的方法,与返回值无关。

原文地址:https://www.cnblogs.com/Java-125/p/8656298.html