学习java—第十三天学习笔记

256 阅读4分钟

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,这是重写方法的注解,起到识别的作用

六、方法重写的注意事项

(面试会问!!!平时利用编译工具会提醒)

  • 方法名必须相同
  • 参数列表必须相同
  • 访问权限相同或者子类访问权限更大:解释↓
    1. public > protected >default >private
    2. 私有方法既使访问权限相同,也不行
    3. 子类权限需要比父类的大
  • 返回值一般必须相同

七、方法的重写和方法的重载的比较

方法的重载 方法的重写
同一个类中 有继承关系的类
参数类型不同 参数相同
返回类型没有规定 返回类型一般相同

八、继承后子父类构造方法的先后顺序

调用方法之前需要创建对象

子类在创建子类对象时:

  • 优先创建父类对象,然后创建子类对象,这样才能去使用父类中的方法和属性
  • 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()只是调用当前类的对象的构造方法,不创建对象