原创

Java基础-封装继承多态

一,封装

1,只能通过规定方法访问数据 
2,隐藏类的实现细节
3,方便加入控制语句
4,方便修改实现

     public class Test {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}

注:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作。当然最好使用get/set方法,比较标准。

A修饰符的有效作用范围

     作用范围

      private

      default

    protected

      public

    同一个类中

    可以

    可以

     可以

    可以

  同一个包的类中

 

    可以

     可以

    可以

  不同包的子类中

 

 

     可以

    可以

  不同包的类中

 

 

 

    可以 

B,this关键字:
1,首先this指的是当前对象,
this.属性 操作当前对象的属性,
this.方法是当前对象中的方法
2,封装对象的属性的时候,经常会使用this关键字。
例如上面的代码中的this,当getter和setter函数参数名和成员函数名重合的时候,可以使用this区别。
c,java中的内部类 
1, 概念:定义在某个类里面的类,被称为内部类, 反之包含内部类的类被称为外部类。
2, 内部类的主要作用如下:
内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类。
注:如果存在内部类时java虚拟机编译时会存在两个同名的calss文件。

                    

3,内部类实现的功能,用外部类同样可以实现,只是使用内部类有时会更方便。
内部类可分为以下几种:

                  1,内部成员类:                       

	   public class Test {                private String s1 = "这是外面的s1";
private String s2 = "这是外面的s2";
public void method1() {
// 外部类可通过内部类的对象调用内部类的私有成员变量或方法
System.out.println(new Inner().s1);
System.out.println(new Inner().method2());
}
private String method2() {
return "这是外部的方法2";
}
public class Inner {
private String s1 = "这是里面的s1";
public final static String s2 = "这是里面的s2";
//这是外部类静态方法
public void method1() {
// 内部类可直接使用外部类的私有成员变量或方法
System.out.println(s2);
// 内部类和外部类有同名变量和方法时
System.out.println(s1);
System.out.println(Test.this.s1);
System.out.println(method2());
System.out.println(Test.this.method2());
}
private String method2() {
return "这是内部方法2";
}
}
public static void main(String[] args) {
Test outer = new Test();
System.out.println("------外部类讨厌的分割线--------");
outer.method1();
System.out.println("------内部类讨厌的分割线--------");
outer.new Inner().method1();
System.out.println(Test.Inner.s2);
}

2,静态内部类:
非静态内部类中不允许定义静态成员
外部类的静态成员不可以直接使用非静态内部类 
静态内部类,不能访问外部类的实例成员,只能访问外部类的类成员
3,方法内部类:
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符
4,匿名内部类:
匿名内部类会隐式的继承一个类或者实现一个接口,或者说,匿名内部类是一个继承了该类或者实现了该接口的子类匿名对象

二,继承

概念:一个类只能单继承,但可以实现多个接口  ,可以基于已经存在的类构造一个新类。继承已经存在的类就可以复用这些类的方法和域。在此基础上,可以添加新的方法和域,从而扩充了类的功能

class Test extends Person {

}

           注: 继承的作用在于代码的复用。由于继承意味着父类的所有方法和属性。

三,多态

多态有四种体现形式:
1,接口和接口的继承。
2,类和类的继承
3,重载。
4,重写。
注:其中重载和重写为核心。
重载:重载发生在同一个类中,在该类中如果存在多个同名方法,但是方法的参数类型和个数不一样,那么说明该方法被重载了。
访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private) 
重写:重写发生在子类继承父类的关系中,父类中的方法被子类继承,方法名,返回值类型,参数完全一样,但是方法体不一样,那么说明父类中的该方法被子类重写了。
以上是个人理解,如有疑问请多多指教!

正文到此结束