Static关键字的应用
final关键字的应用
常量的调用与命名
抽象方法
封装
接口
多态
单例设计模式
工厂设计模式
static使用规则
1.可以调用其他静态方法
2.必须访问静态数据
3.不能使用super或this关键字
4.是所有的类公用对象或者方法(不因为对象的改变而改变)(静态的)
5.静态的变量和方法可以通过“类名.”来调用
final的使用方法
1.final修饰变量时,变量的值不允许改变,要改变系统要自动报错
2.全局变量要立刻赋值,局部变量可以先不赋值。
3.final修饰方法是,该方法是不允许重写的。
@override重写的方法是父类中的方法。
常量的命名规则是:全部大写单词用下滑线隔开
import static com.baidu.packag.Person.EYE_NUM;
上面是跨包调用的实例,需要输入包名,类别,名称
通常称为常量的导入
import static com.baidu.packag.Person.EYE_NUM;
public class Text2{
public static void main(String[] args) {
System.out.println(EYE_NUM);
}
}
关键词是abstract
1.abstract也可用于方法即抽象方法
2.抽象方法没有方法体
3.抽象方法必须在抽象类里
4.抽象方法必须在子类中实现除非子类也是抽象方法
//抽象类的构造,里面是抽象方法
public abstract class Student01 {
public abstract void readBook();
}
//抽象的子类,实现抽象的的具体方法;
public class Schoolboy extends Student01{
@Override
public void readBook() {
System.out.println("语文数学社会");
}
}
// 匿名内部类,一般只在使用一个此类对象的时候使用
// 相当于继承了Student01类,然后用此类构建了一个对象
Student01 ss=new Student01(){
public void readBook() {
System.out.println("会读书");
};
};
ss.readBook();
封装的定义
将实现隐藏在类的内部,提供一个公开的方法,不允许外部程序直接访问而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的好处
1.隐藏类的实现细节
2.只能通过规定方法访问数据
3.方便加入控制语句
4.方便修改实现
//定义一个封装类,类名为People
public class People {
// 返回值类型是Paper
public Paper creatPaper(){
Paper paper=new OtherPaper();
return paper;
}
public Ink creatInk(){
Ink ink=new BeiJingInk();
return ink;
}
//封装的调用
People people=new People();
Print print1=people.creatPrint();
Paper paper1=people.creatPaper();
Ink ink1=people.creatInk();
print1.print(ink1, paper1);
接口的特点
关键字是implements
1.接口中不允许有变量只允许有常量和抽象方法
2.接口常作为类型使用
3.接口不可以被实例化
4.实现类必须实现接口的所有方法
5.实现类可以实现多个接口
6.接口中的变量都是静态常量
//创建接口类,以及抽象方法;
public interface Print {
public void print(Ink ink, Paper paper);
}
//创建一个类包含接口Print
public class HPPrint implements Print{
@Override//重写关键字,重写父类中的方法,重写接口中的方法
// 创建一个方法名称为Print
// 返回值得类型为Ink型(自己定义的类型,属于接口)
// 返回值的类型为Paper型(自己定义的类型,属于接口)
public void print(Ink ink, Paper paper) {
System.out.println("HP我使用的墨盒是"+ink.getInk()+"纸张是"+paper.setSize());
}
}
// 调用接口中的类是,首先要声明接口类型
// Print print=new HPPrint();
// Paper paper=new ChenGuangPaper();
// Ink ink=new BeiJingInk();
// print.print(ink, paper);
instanceof运算符
1.该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false
2.在强制类型转换之前通过instanceof运算符检查对象的真实类型,可以避免类型转换异常,从而提高代码的健壮性。
// if(print1 instanceof HPPrint){
// System.out.println("是惠普的打印机");
// }
// else{
// System.out.println("不是惠普的打印机");
// }
多态
使用父类引用指向子类对象
没有继承就没有多态,
一个接口多种实现
单例设计模式
1.类值产生一种对象
2.现有私有构造器
3.创造一个静态得到对象的方法
4.创建静态对象
5.在静态方法中加条件语句
public class Student {
//创建静态对象 字符类型为Student
private static Student instence;//初始默认值为null
// 创建私有构造器
private Student(){
System.out.println("经过了私有构造器");
}
//创建一个静态得到对象的方法
public static Student getInstence(){
//在静态方法中加条件语句
if(instence==null){
instence=new Student();
}
return instence;
}
}
public static void main(String[] args) {
Student zhangsan=Student.getInstence();
Student lisi=Student.getInstence();
System.out.println(zhangsan);
System.out.println(lisi);
工厂设计模式
需要用到的关键字是Properties还有try catch结构(具体我也不是太明白)还需要多多接触
Properties properties=new Properties();
String s="";
try {properties.load(new FileInputStream("configproperties"));;
s=properties.getProperty("print");
System.out.println(s);
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
Print print=null;
if (s.equals("hpp")) {
print=new HPPrint();
}else if(s.equals("apple")){
print=new ApplePrint();
}
// Print print=new HPPrint();
return print;
}
// 调用模式为
People people=new People();
Print print1=people.creatPrint();
Paper paper1=people.creatPaper();
Ink ink1=people.creatInk()
print1.print(ink1, paper1);