概念:隐藏类的实现细节,将类的属性私有化,提供公开的接口访问这些属性。
好处:①安全性 ②不关系具体实现 ③打包模块(增加了数据的访问限制,增强了数据的可维护性。)
实现:①将属性私有化 ②每个属性提供两个公开的方法(get、set)
例:请通过代码封装,实现:
编写一个Book类,代表教材:具有属性:名称(title)、页数(pageNum)、其中页数不能少于200页,否则输出错误信息,并赋予默认值200为个属性设置赋值(set)和取值(get)方法具有方法:toString,用来在控制台输出每本教材的名称和页数通过main方法进行测试:为Book对象赋予初始值,并调用Book对象的toString方法,看看输出是否正确
package package0324;
public class Book {
private String title;
private int pageNum;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
if (pageNum < 200) {
System.out.println("页数不能少于200页。");
this.pageNum = 200;
return;
}
this.pageNum = pageNum;
}
@Override
public String toString() {
return "Book{" +
"title='" + title + ''' +
", pageNum=" + pageNum +
'}';
}
public static void main(String[] args) {
Book book = new Book();
book.setTitle("英语");
book.setPageNum(199);
System.out.println(book.toString());
}
}
继承:
概念:子类继承父类的一般特性,以及自己的特有的特性。
容易出问题的地方:
①构造器问题:
产生子类对象前,首先产生父类对象,默认情况下产生父类对象时调用无参构造器
父类书写一个无参构造器调用父类无参构造器构造器不会继承
②声明问题:
A是父类,B是子类
A a = new A();
B b = new B();
A c = new B();声明的是父类,所以不能使用子类所拥有的方法,只能使用父类所拥有的方法。
Java是单继承,一个类只能继承一个父类,但是可以通过传递性来依赖获取其它类的特性
实现:public class A extends B{……}//继承父类特有的属性和方法
public class Teacher1 {
String name;
String schoolName;
public void lession(){
System.out.println("打开idea");
System.out.println("知识点讲解");
}
public void introduction(){
System.out.println("我是:"+name);
System.out.println("我来自于:"+schoolName);
}
public static void main(String[] args) {
JavaTeacher1 java=new JavaTeacher1();
java.name="王妍";
java.schoolName="商洛学院";
java.lession();
java.introduction();
}
}
public class JavaTeacher1 extends Teacher1 {
public void lession(){
System.out.println("vs");
super.lession();
}
}
多态:
概念:具有表现多种形态的能力特征。
实现:
①方法的重写:子类重写父类的方法
②方法的重载:在同一类中,多个方法具有相同的方法名,不同的形式参数列表。
public void a(int a){
System.out.println("a");
}
public void a(int a,String name){
System.out.println(a+name);
}



