一.封装
(暂时只学到对属性的封装)
1.封装的概念:
把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类或者对象进行操作,对不可信的类或者对象隐藏,这样的过程叫做封装。
2.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
将变化隔离。
便于使用。
提高重用性。
提高安全性。
3.封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
4.封装的分类:
对属性的封装:将属性设置为private(私有),限制其只能在类的内部使用
对方法的封装:对于方法的封装,将外部可以访问方法设置为public,将外部不能访问的方法设置为private。
private关键字:是一个权限修饰符。用于修饰成员(成员变量和成员函数)
被私有化的成员只在本类中有效。
另外两个权限修饰符是public(公共) protected(受保护的);在此不做介绍。
5.属性的封装(一般是封装变量):将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。(抽象的说法就是给家里的大门上个所,别人要进来,必须要用钥匙开门,而这个钥匙就是set ,get方法),set ,get方法在java里面有生成快捷键,shift+alt+s。
例子:
public class Test{
//对变量 和 方法的封装
private String name="张三"; //将成员变量设置为私有的 达到属性封装的目的
public void setName(String name){ //为私有属性提供set方法,用于修改私有属性的值
this.name=name;
System.out.println("name..."+name);
}
public String getName(){ //为私有属性提供get方法,用于获取私有属性的值
System.out.println("name..."+name);
return name;
}
}
二.继承
1.什么是继承:
一个新类可以从现有的类派生,这样的过程叫做继承。(j简称父类和子类)
那么在继承的过程中,新类被称为子类,现有的类被称为父类,子类将会继承父类的属性和行为。
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可。多个类可以称为子类,单独这个类称为父类或者超类。
子类可以直接访问父类中的非私有的属性和行为。
对照着父亲和儿子的概念来说,相同属性和行为就是父亲和儿子有相同的DNA,相同的肤色,性别,相同的行为就是吃饭,睡觉。这些属性和行为是两人共有的,儿子的类里面可以不用写,直接从父亲的类里面得到,这里又可以提到另外一点,
变量私有化和封装:父亲会抽烟,喝酒,但是他不想要儿子也继承这些行为,所以他必须将这些行为私有化,让儿子得不到,或者需要申请拿到资格,也就是上面说的钥匙。
2.继承的语法:
[修饰符] class 子类类名 extends 父类类名{类体部分}
通过 extends 关键字让类与类之间产生继承关系。
案例:
class SubDemo extends Demo{
}
继承的出现提高了代码的复用性。
继承的出现让类与类之间产生了关系,提供了多态的前提。
首先我们要先写两个类Father类和Son类:
Father类
package day05;
public class Father {
public String name;
public String sex;
private int age;
//构造器
public Father(){}
public Father(String name,String sex,int age){
this.name=name;
this.sex=sex;
this.age=age;
}
//属性封装
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//方法(行为)
public String eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
private void monkey(){
System.out.println("抽烟");
}
private void monkey(){
System.out.println("喝酒");
}
}
儿子类
package day05;
public class Son extends Father {
double sal;
//构造器
public Son (){}
public Son (double sal){
this.sal=sal;
}
//属性封装
public double getSal() {
return sal;
}
public void setSal(double sal) {
this.sal = sal;
}
public void study(){
eat(); //调用父类的方法
System.out.println(super.name+"在学习");
}
public void play(){
System.out.println(name+"在玩游戏");
}
}
继承特点:
Java只支持单继承,不支持多继承。
一个类只能有一个父类,不可以有多个父类。
class Son extends Father{} //ok
class SonSon extends Father,Son ...//error
Java支持多层继承(继承体系)
class Father{}
class Son extends Father{}
class SonSon extends Son{}
儿子继承父亲的属性,儿子的儿子也可以继承父亲的属性
定义继承需要注意:
不要仅为了获取其他类中某个功能而去继承
类与类之间要有所属( " is a " )关系,xx1是xx2的一种。