JAVA_面向对象_DAY03


一、Debug

看代码执行流程的工具

操作:F5 进方法 F6 执行下一行 F8 到下一 个断点

二、面向对象特点之 —封装

1.属性的封装

原来用public修饰的属性 现在用private关键字修饰
访问修饰符 public 公共的 在任何地方都可以访问
private 私有的 只能在本类中访问。
相当于将类中的属性进行私有化 ,但是当想给外界提供访问的时候,需要提供特殊的访问途径, 主要通过get和set方法进行访问

代码如下(示例):

private String name ;
public void getname(String name){
 this.name = name;
}
public String setname(){
return name;
} 

三、面向对象特点之 —继承

描述对象关系的时候存在一种继承关系

管继承的类叫子类 被继承的类叫父类

此特点遵循:单继承关系

1.子类通过extends继承父类

一个子类只能有一个父类 一个父类可以有多个子类

父类 相对子类讲很抽象
子类 相对父类讲更具体

2.属性和方法的访问

子类可以使用父类的属性和方法 ,父类不能够访问子类独有的属性和方法

3.创建子类对象时

先调用父类的构造方法,再调用子类的构造方法

4.小测试,用于判断执行的先后顺序

代码1:

package com.openlab.pojo;

public class Dog extends Animal {
	
	private static Dog d = new Dog("大黄",5);
	
	public String eyescolor;
	//  123 - Animal -Dog
	{
		System.out.println("000");
	}
	//静态代码块
	static{
		System.out.println("123");
	}
	
	public Dog(String name,int legs) {
		super(name, legs);
		System.out.println("This is  A DOG!!!");
	}
	public void eat(){
		System.out.println("干饭 ");
	}

}

代码2:

package com.openlab.pojo;

public class Animal {
	
	public String name;
	public int legs;
	
	{
		System.out.println("xxx");
	}
	static{
		System.out.println("456");
	}
	
	public Animal(String name,int legs) {
		System.out.println("This is  an  Animal!!!");
	}
	
	
	//  动物开心了的表达方式
	public void enjoy(){
		
		System.out.println("叫两声");
	}

}

代码3:

package com.openlab.pojo;

public class Test {
	
	public static void main(String[] args) {
		Dog d = new Dog("大黄",5);
		d.enjoy();
		
//		Animal  a = new Animal();
		
	
	}

}

注意:看到一个类要先看这个类的继承关系,尤其注意static
结果,输出的执行顺序如下:

456//父类静态代码块
xxx//父类代码块
This is an Animal!!!//父类构造方法
000//子类代码块
This is a DOG!!!//子类构造方法
123子类静态代码块
xxx//父类代码块
This is an Animal!!!//父类构造方法
000//子类代码块
This is a DOG!!!//子类构造方法
叫两声//子类方法

1.父类的静态代码块 只执行一次 并且在类加载的时候执行
2.子类的静态代码块
3.父类的代码块
4.父类的构造方法
5.子类的代码块
6.子类的构造方法

总结:
在一个类中,不论是静态的代码还是静态的变量都是按照在这个类中的代码先后顺序执行的。

四、Super关键字

超类基类的引用
不可以当返回值使用

五、继承类中引用数据类型的转化

1.遵循与基本数据类型中的数值型一样的规则:

引用数据类型的转换
小的类型转大的类型叫向上转型 自动转换
大的类型转小的类型叫向下转型 强制转换

2.instanceof 关键字

用于判断引用数据的类型
代码如下(判断aa是否为Dog的引用数据类型):

Animal aa = new Dog("大hong",6);
		Animal aaa = new Cat("Bosi",4);
		//对象   type ---类型
		if (!(aa instanceof Dog)) 
			
			System.out.println(false);
		else{
			Dog ddd = (Dog) aa;
		}

3.classcastException 类型转换异常

五、Override重写

定义:
发生在两个类中 方法名相同 返回类型相同 参数列表相同 方法体不同
注意:子类重写父类的方法是 访问修饰符不能比父类更严格。
重写是多态的表现形式之一

六、面向对象特点之 —多态

对象的多种形态
多态的表现形式之一 父类引用指向子类对象
注意:1 父类引用访问不了子类独有的属性和方法
2.父类引用调用的重写的方法 会调用相应子类的重写的方法。

public static void main(String[] args) {
        People p=new Stu();
        //这里是直接调用子类重写中的内容(多态中唯一可以直接引用子类的内容)
        p.eat();
        //父类只有强制转换,才能调用子类中的特有的方法
        Stu s=(Stu)p;
        s.study();
        //((Stu) p).study();
    }
}
class People{
    public void eat(){
        System.out.println("父类吃");
    }
}
class Stu extends People{
    @Override
    public void eat(){
        System.out.println("子类吃");
    }
    public void study(){
        System.out.println("子类学习");
    }
}

七、static关键字

习题,口算出的count1,count2的值:

package com.openlab.pojo;

public class StaticTest {
	
	private static StaticTest st = new StaticTest();
	
	private static int count1;
	private static int count2 = 0;
	
	public StaticTest() {
		count1++;
		count2++;
	}
	public static StaticTest getInstance(){
		return st;
	}
	public static void main(String[] args) {
		
		StaticTest st = StaticTest.getInstance();
		System.out.println(StaticTest.count1);
		System.out.println(StaticTest.count2);
	}

}

总结:
1.被static关键字所修饰的属性和方法 被整个程序共享,通过类名直接调用
2.静态方法中不能访问非静态变量和方法
3.在非静态方法中不能声明静态的局部变量
4.被static修饰的属性 优先被加载 优先于主方法
5.静态代码块只执行一次 优先于代码块和构造方法
6.静态代码块和静态变量同时存在时 按照先后顺序执行


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值