2019.7.29 NIIT第十三天
一、文件夹复制
File类->文件和目录路径名的抽象表示形式
构造方法:new File("字符串复制");
import java.il.File;
public class FoderTest{
//File类进行文件夹/文件的创建
File file=new File("d://f1s");
file.mkdirs();//创建文件夹;
}
二、匿名对象
- 对象只使用一次
- 方便编码 匿名对象的写法:↓
public class TestPerson{
public static void main(String[] args){
Preson r=new Person();
p.setName();
new Person().setName("xuning");
}
}
三、组合关系
定义:当一个自定义类型A的成员变量的数据类型是自定义类型B时,A类与B类叫做组合关系
public class Person{
privaet Pet pet;//一个宠物
privaet ArrayList<Pet>;//一个宠物列表
}
class Pet{
String name;
}
一个类中包含其他类(这个类与其他类之间就是组合关系)
在编码是就是在这个类中添加一个属性,这个属性的类型就是组合关系中的类
四、继承
关键字:extends
继承是面向对象的核心特性
继承是代码复用的重要方式
1、子类继承父类,子类必须是父类的一种时,才会继承
2、父类抽取出共同的内容,子类可以在父类基础上扩展新的属性与行为
3、子类拥有父类所有的非私有属性和方法,无需重新定义,可以通过对象直接调用
注意:
- 所有的类都直接或者间接继承Object类
- ↑其他情况的关键字extends必须要写
- JAVA只支持单继承!
- JAVA可以多层继承,当F类需要继承A.B类的时候,可以让B继承A,让F继承B。即可让F实现调用A.B类中的方法 父类也叫超类
//Student默认继承Object类
public class Student{
}
public class testStudent{
public static void main(String[] args) {
Student s=new Student();
System.out.println(s.getClass());
}
}
继承测试代码:
//使用父类的public方法可以通过子类直接调用
//使用父类的private属性需要通过public的get/set方法
//父类Animal
public class Animal {
public void eat() {
System.out.println("吃吃吃.......");
}
}
//Cat 子类 Animal 父类 extends 表示继承的意思
public class Cat extends Animal{
public void catchmousr() {
System.out.println("抓老鼠");
}
//子类中就可以不写与父类相同的代码,直接使用父类的代码
//这样就可以去掉冗余代码,简化开发
//Animal父类中的eat方法可以直接被Cat的对象调用
}
//Dog 子类
public class Dog extends Animal{
public void lookhome() {
System.out.println("看家");
}
}
//测试类中进行继承测试
public class Test {
public static void main(String[] args) {
Cat cat=new Cat();
cat.eat();
cat.catchmousr();
}
}
五、方法重写
- 子类对象对父类方法的扩展,由于重名,因此按子类自身逻辑对父类同名方法进行重新定义,在创建子类对象时,优先调用重写方法
- 为了表明,方法为重写父类的方法,我们给这个方法加个标记,方便我们识别@Override,这是重写方法的注解,起到识别的作用
六、方法重写的注意事项
(面试会问!!!平时利用编译工具会提醒)
- 方法名必须相同
- 参数列表必须相同
- 访问权限相同或者子类访问权限更大:解释↓
- public > protected >default >private
- 私有方法既使访问权限相同,也不行
- 子类权限需要比父类的大
- 返回值一般必须相同
七、方法的重写和方法的重载的比较
| 方法的重载 | 方法的重写 |
|---|---|
| 同一个类中 | 有继承关系的类 |
| 参数类型不同 | 参数相同 |
| 返回类型没有规定 | 返回类型一般相同 |
八、继承后子父类构造方法的先后顺序
调用方法之前需要创建对象
子类在创建子类对象时:
- 优先创建父类对象,然后创建子类对象,这样才能去使用父类中的方法和属性
- JVM中根据extends关键字找到被继承的父类,自动创建对象
九、继承的内存分析
Person p1=new Person();
在栈内存中先存放p1的地址
在堆内存中先调用父类的构造器,创造父类对象并加载父类方法
然后调用子类的构造器,创建子类对象
通过子类对象可以调用父类对象中非私有方法
十、super关键字
所有子父类重名都遵循就近原则
解决子类和父类属性重名的方法
当子类需要使用父类同名属性的时候,加super关键字即可:
super.name;
super表示父类的一个对象,通过super在子类中对父类的属性和方法进行操作
本类使用this.xxx表示当前类自身的对象中的属性/方法
父类使用super.xxx表示父类的对象中的属性/方法
十一、super访问父类构造方法
super()就是父类的构造方法,如果有参数就写在括号内
同理:
this()就是调用当前对象本身的构造器;
面试:↓
this和super用于调用构造器必须放在第一行!
//使用new Person()会创建一个对象this()只是调用当前类的对象的构造方法,不创建对象