Java 面向对象理解

Java 面向对象的三大特性

    封装

        比如我们想描述人的属性,可以把人的相关属性name,age...封装成一个人类 Person

        类,这样我们就实现从基本数据(属性)到类的封装

        我们也可以把一些常用的方法封装到一个类里,作为工具类,比如数据格式校验的方法,

        时间格式转换的方法, 这样我们就实现从常用方法到类的封装

        有些情况下,我们的数据结构比较复杂,在一个类中的属性中也会声明另一个类的声明,

         或者声明一个类的集合作为属性

               class Teacher{
                  public String name;   //老师的名字
                  public Family family;//家庭类
                  List<Student> students;//老师名下的学生集合
               }

         特殊情况下,这样的数据封装还不够,我们还需要限制访问权限,比如加上private修饰

        符,限制只能在类的内部调用,比如:

               class Bank{ 
                  private String money;//存款数目
                  public String getMoney() {
                	return money;//银行人员执行取款操作
                  }
                  public void setMoney(String money) {
                	this.money = money;//银行人员执行存款操作
                  }
                }

    以上的封装是在属性和方法的层次上,还有一种更加有意思的封装形式是内部类,规则是:

成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员), 这个规则结合继承,就巧妙的解决了Java单继承的问题:

    public class External extends Father { 
    	private String Exname;
    	//内部类
    	class internal {
    		private String inname;
    
    		public void print() {
    			System.out.println(Exname);
    			fatherPrint();//可以直接访问Father类的打印方法
    		}
    	}
    
    	public void get() {
    		System.out.println(internal.class);
    	}
    
    	public String getExname() {
    		return Exname;
    	}
    
    	public void setExname(String exname) {
    		Exname = exname;
    	}
    }

    继承

       Java中的继承通过关键字 extends 实现,子类继承父类全部内容,但是可访问的内容仅仅限于非 private 修饰的内容.

     子类在实例化的时候,默认先调用父类的无参构造方法,所以父类一般会提供一个无参的构造方法以供子类调用,当然了,子类也可以通过 super(参数列表);来指定调用的父类构造方法

        public class Father {
	       public String name;

           Father() {
        
           }

           Father(String name) {
             this.name = name;
           }
	
        public class Son extends Father {
          private String name;
        
          Son (String name){
        	super(name);//调用父类的有参构造方法
          }

    多态

      在继承的基础上的实现,父类的变量指向子类实例化的内容

方法的重写和重载

    重载,属于同一个类中的方法,方法名一样,参数列表不同,返回值类型可以相同也可以不相同。

    重写,子类对继承自父类的方法进行重新实现.相同的方法签名,相同的返回值,不小于父类方法的访问权限

你可能感兴趣的:(java,public,family)