常量定义语法:public static final int PORT_NUMBER=1;
常量命名规则:全部单词要大写,单词要用下划线隔开。
建一个Person类
public class Person {
public static final int EYE_NUM=2; //常量
private int age;
private String name;
public static int hands=2; //静态全局变量
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void run(){ //静态方法
System.out.println("我们都会跑!");
}
}
建一个测试类
public class Test {
public static void main(String[] args) {
System.out.println("我们都有"+Person.hands+"双手");
System.out.println("我们都有"+Person.EYE_NUM+"只眼");
Person.run();
}
}
接口是一些方法特征的集合,但没有方法的实现,只是声明。接口中定义的方法在不同的地方被实现,可以具有不同的行为。
public interface 接口名{
方法1;
方法2;//方法的声明
public class 类名 implements 接口名{
方法1{}
方法2{} //方法的实现
接口名 对象名 = new 类名(实现该接口的类)();
对象名.方法名(); //调用接口声明的方法
//创建Fly接口
public interface Fly {
public void fly();
}
//创建Load接口
public interface Load {
public void load();
}
//创建Plane类实现两个接口
public class Plane implements Fly,Load{
@Override
public void load() {
System.out.println("我能运货");
}
@Override
public void fly() {
System.out.println("我能飞");
}
}
//创建Apache类继承Plane类
public class Apache extends Plane{
}
//创建Test类
public class Test {
public static void main(String[] args) {
Apache apache = new Apache();
apache.fly();
apache.load();
}
}
我需要一个人去按要求打印东西
①首先需要打印机,墨盒墨水,纸张:
//创建Print接口
public interface Print {
public void print(Ink a,Paper b);
}
//创建HPPrint类实现Print接口
public class HPPrint implements Print{
@Override
public void print(Ink a, Paper b) {
System.out.println("我是惠普打印机,我用的墨盒颜色是:"+a.getColor()+" 我用的纸张尺寸是:"+b.getSize());
}
}
//创建EpsonPrint类实现Print接口
public class EpsonPrint implements Print{
@Override
public void print(Ink a, Paper b) {
System.out.println("我是爱普生打印机,我用的墨盒颜色是:"+a.getColor()+" 我用的纸张尺寸是:"+b.getSize());
}
}
//创建Ink接口
public interface Ink {
public String getColor();
}
//创建BeijingInk类实现Ink接口
public class BeijingInk implements Ink{
@Override
public String getColor() {
return "北京彩色";
}
}
//创建ShangHaiInk类实现Ink接口
public class ShangHaiInk implements Ink{
@Override
public String getColor() {
return "上海黑白";
}
}
//创建Paper接口
public interface Paper {
public String getSize();
}
//创建ChenGuangPaper类实现Paper接口
public class ChenGuangPaper implements Paper{
@Override
public String getSize() {
return "晨光A4";
}
}
//创建OrherPaper类实现Paper接口
public class OrherPaper implements Paper{
@Override
public String getSize() {
return "其他A6";
}
}
②准备好上述三样东西以后,就需要一个人来拿着这三样东西去打印
//创建Person类
public class Person {
public Print cratePrint(){//得到打印机的方法
Print print = new HPPrint();
return print;
}
public Ink crateInk(){//得到墨水的方法
Ink ink = new BeijingInk();
return ink;
}
public Paper cratePaper(){//得到纸张的方法
Paper paper = new ChenGuangPaper();
return paper;
}
public void print(){
Print print=cratePrint();
Ink ink=crateInk();
Paper paper=cratePaper();
print.print(ink, paper);
}
}
③开始打印
//创建Test类
public class Test {//面向借口编程
public static void main(String[] args) {
Person zhangsan = new Person();
zhangsan.print();
}
}
使用abstract关键字定义一个抽象类
public abstract class Person{//定义抽象类
public abstract void sayHi();//声明抽象方法
}
//创建一个Person抽象类
public abstract class Person {
public abstract void sayHi();
}
//创建Chinese类继承Person类
public class Chinese extends Person {
@Override
public void sayHi() {
System.out.println("你好!");
}
}
//创建Test类
public class Test {
public static void main(String[] args) {
Person p1 = new Chinese();//父类new一个子类
p1.sayHi();
Chinese p2 = new Chinese();//子类new一个子类
p2.sayHi();
Person p3 = new Person() { //匿名内部类
@Override
public void sayHi() {
System.out.println("Hello!");
}
};
p3.sayHi();
}
}
在一个类的内部又创建了一个类
public class ClassA {
private int a=1;
public void testA(){
System.out.println("外部类的方法");
}
class ClassAChild{ //内部类
private int a=2;
public void testAChild(){
testA();//内部类直接调用外部类的方法
System.out.println("内部类的方法"+" 外部类的属性a="+a);//调用外部类的属性a
}
}
}
//创建Test类
import lz20150721.d5.ClassA.ClassAChild;
public class Test {
public static void main(String[] args) {
//内部类的实例化
ClassAChild classAChild=new ClassA().new ClassAChild();
classAChild.testAChild();//调用内部类的方法
}
}
public class ClassA {
private int a;
public void testA(){
class ClassB{
private int b;
public void testB(){//定义局部内部类
System.out.println("局部内部类的方法");
}
}
ClassB classB= new ClassB();
classB.testB();
}
}
//创建Test类
public class Test {
public static void main(String[] args) {
ClassA classA = new ClassA();
classA.testA();
}
}
//创建IA接口
public interface IA {
public void func();
}
//创建Test类
public class Test {
public static void main(String[] args) {
IA a = new IA() {//匿名内部类
@Override
public void func() {
System.out.println("匿名内部类");
}
};
a.func();
}
}
需求只创建一个对象,即可用单子设计模式
1. 隐藏系统的无参构造方法——>private
2. 创建一个静态的得到对象的方法。
3. 创建一个静态的本类的对象。
4. 在静态方法中添加判断语句。
//创建Student类
public class Student {//单子设计模式
private static Student instance;//第三步
private Student(){//第一步
}
public static Student getInstance(){//第二步
if(instance ==null){//第四步
instance = new Student();
}
return instance;
}
}
//创建Test类
public class Test {
public static void main(String[] args) {
Student zhangsan = Student.getInstance();
Student lisi = Student.getInstance();
System.out.println(zhangsan);
System.out.println(lisi);
}
}
运行结果:
结果显示两个对象指向的地址相同,说明只创建了一个对象。