---恢复内容开始---
1:面向对象->内部类 什么是内部类? 将类写在其它类的内部,可以写在其它类的成员位置和局部位置,把写在其它类内部的类 就称为内部类。其它类,我们称为外部类。 什么时候使用内部类? 在描述事物。如果一个事物的内部包含其它包含的事物。 class 汽车{ // 外部类 class 发动机{ // 内部类 } }
package com.itstra.demo01; /* * 内部类的定义: * 将内部类定义在外部类的成员位置 * */ public class Outer { private int a = 1; /* * 调用规则:内部类,可以使用外部类成员,包括私有 * 外部类要使用内部类成员,必须建立内部类对象 */ class Inner{ public void Inner() { // 内部类可以直接使用外部类的私有成员变量 同级别的关系 System.out.println("内部类的方法Inner" + a); } } }
package com.itstra.demo01; public class Test { public static void main(String[] args) { /* * 调用外部类中的内部类的方法Inner方法 * 依靠外部类的对象,来找到内部类,通过内部类的对象,调用内部类的方法 * 格式: * 外部类名.内部类名 变量 = new 外部类对象().new 内部类对象(); * 变量名.内部类方法() */ Outer.Inner in = new Outer().new Inner(); in.Inner(); } }
局部内部类:
2:面向对象->成员内部类的同名变量调用
package com.itstra.demo02; public class Outer { int a = 1; class Inner{ int a = 2; public void inner() { int a = 3; // 就近原则 //System.out.println(a); // 3 //System.out.println(this.a); // 2 System.out.println(Outer.this.a); // 1 } } }
package com.itstra.demo02; public class Test { public static void main(String[] args) { Outer.Inner in = new Outer().new Inner(); in.inner(); } }
3:面向对象->局部内部类
package com.itstra.demo03; public class Outer { // 局部内部类的定义 public void out() { class inner{ public void inner() { System.out.println("局部内部类方法"); } } } public void out_1() { // 类不重名 属于不同方法中 class inner{ } } }
package com.itstra.demo03; public class Test { public static void main(String[] args) { // 什么都没有 原因调用不到局部内部类的方法 new Outer().out(); } }
匿名内部类
4:面向对象->匿名内部类
package com.itstra.demo04; public interface Smoking { public abstract void smoking(); /* * 实现类,实现接口,重写接口的抽象方法,创建实现对象 * class XXX implements Smoking{ * public void smoking(){ * * } * } * * XXX x = new XXX(); * x.smoking; * * Smoking s = new XXX(); * s.smoking; * * 以上的形式太复杂,写的东西太多 * 匿名内部类,简化问题:定义实现类,重写方法,建立实现类对象 */ }
package com.itstra.demo04; public class Test { /* * 使用匿名内部类 * * 定义实现类,重写抽象类方法,创建实现对象,一步搞定 * 格式: * new 接口或者父类(){ * 重写抽象方法 * }; * * 在;位置.方法名 * * 等价于: * XXX x = new XXX(); * x.smoking(); * * 注意:前提必须实现了接口就看继承 */ public static void main(String[] args) { // 匿名内部类的使用 new Smoking() { public void smoking() { System.out.println("人在吸烟"); } }.smoking(); } }
匿名内部类的使用:
package com.itstra.demo05; public abstract class Animal { public abstract void eat(); public abstract void sleep(); }
package com.itstra.demo05; public class Test { /* * 方式一: */ public static void main1(String[] args) { // 匿名内部类创建对象 new Animal() { public void eat() { System.out.println("动物在吃"); } public void sleep() { System.out.println("猪在睡觉"); } }.eat(); // 打印动物在吃 } /* * 方式二: */ public static void main(String[] args) { // 匿名内部类创建对象 Animal a = new Animal() { public void eat() { System.out.println("动物在吃"); } public void sleep() { System.out.println("猪在睡觉"); } }; a.eat(); a.sleep(); } }
5:面向对象->包
java的包,其实就是电脑系统的文件夹,包里存放的是程序生成的类文件。对类分类管理。
声明格式:
通常使用公司网址的反写,可以有多层包,包名采用全部小写(这是包名的格式和规范),多层包之间"."连接
导包要引入包最后的文件夹位置都要引用*,全部导入
导包不用我们参与
6:面向对象->代码块
格式:{}
atatic{} 静态代码块
package com.itstra.demo06; public class Person { private String name; private int age; public Person(String name,int age) { this.age = age; this.name = name; System.out.println("我是有参构造方法"); } // 构造代码块 { System.out.println("我是构造代码块"); } // 静态代码块 static { System.out.println("我是静态代码块"); } }
package com.itstra.demo06; /* * 静态代码块,执行一次 * 构造代码块,new一次就执行一次,优先于构造方法 * 构造方法,new一次就执行一次 */ public class Test { public static void main(String[] args) { // 构造代码块 { int a = 1; System.out.println(a); } // 不可以,代码块限制作用域,生命周期 //System.out.println(a); Person p1 = new Person("蟑螂",20); Person p2 = new Person("雷锋",32); } }
抽象类复习与继承图谱快捷键:
package com.itstra.demo07; public abstract class Employee { public abstract void work(); }
package com.itstra.demo07; public class JavaEE extends Employee{ @Override public void work() { System.out.println("javaEE工程师正在工作"); } }
package com.itstra.demo07; /* * 继承图谱快捷键:Ctrl + T */ public class Test { public static void main(String[] args) { JavaEE ee = new JavaEE(); ee.work(); } }
文档注释:
package com.itstra.demo08; /* * 实现整数求和 */ public class GetSum { /** * 方法getSum实现的是两个整数求和 * @param a * @param b * @return sum */ public static int getSum(int a,int b) { return a + b; } }
自己封装:右击->点击Export ->选择Javadoc ->点击Next
综合小案例
package com.itstra.demo09; public abstract class Employee { private String name; private String id; // 开发标准 public Employee() { } public Employee(String name,String id) { this.name = name; this.id = id; } // 方法工作 public abstract void work(); public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } }
package com.itstra.demo09; /* * 接口 */ public interface Vip { public abstract void services(); }
package com.itstra.demo09; public class FuWuYuan extends Employee implements Vip{ public FuWuYuan() { super(); } public FuWuYuan(String name,String id) { super(name,id); } @Override public void services() { System.out.println("服务员倒酒"); } @Override public void work() { System.out.println("服务员上菜"); } }
package com.itstra.demo09; public class JingLi extends Employee{ public JingLi() { } private double money; public JingLi(String name,String id,double money) { super(name,id); this.money = money; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } @Override public void work() { System.out.println("监督 "); } }
package com.itstra.demo09; public class ChuShi extends Employee implements Vip{ public ChuShi() { } public ChuShi(String name,String id) { super(name,id); } @Override public void services() { System.out.println("加菜"); } @Override public void work() { System.out.println("做菜"); } }
package com.itstra.demo09; public class Test { public static void main(String[] args) { // 创建一个经理 2个服务员 JingLi jl = new JingLi("hunter","经理022",62012); jl.work(); FuWuYuan fy1 = new FuWuYuan("小强","服务员021"); FuWuYuan fy2 = new FuWuYuan("水哥","服务员025"); fy1.work(); fy1.services(); fy2.work(); fy2.services(); ChuShi cs1 = new ChuShi("雷达上","厨师023"); ChuShi cs2 = new ChuShi("情景二","厨师210"); cs1.work(); cs1.services(); cs2.work(); cs2.services(); } }