面向对象之零散知识点

类与对象

一、 面向对象学习的三条主线:
1.类及类的成员 : 属性,方法,构造器,代码块,内部类
2.面向对象的三大特性 : 封装性,继承性,多态性
3.其它关键字 :this,super,interface,final,static…
二、面向对象与面向过程(理解
面向过程:强调的是功能行为
面向对象 :强调具备了功能的对象
三、面向对象中两个重要的概念:
类 :类是抽象的概念上的定义,是对一类事物的描述。(类似于汽车设计图)
对象 :是一个实实在在的个体。是由类派生出来的(new 出来的)
四、面向对象思想落地实现的规则一
1.先创建一个类并提供必要的属性和方法
2.通过类创建对象
3.通过对象调用属性和方法。(对象名.属性名,对象名.方法名)
五 属性和方法

Field = 属性 = 成员变量
Method = 方法 = 函数

七 注意:

通过一个类创建的多个对象,每个对象独自拥有一份属性。当某一个对象对属性进行修改后,
并不会影响其它对象中的属性。

匿名对象

匿名对象:没有名字的对象 (new Person())

特点:只能调用一次

使用场景:往往将匿名对象作为实参进行传递

对象数组

一 说明 :该数组中存储的元素是对象

二 数组中存放的是同一个对象

 Person[] ps = new Person[3];
 Person p = new Person();
 for(int i = 0; i < ps.length; i++){
	ps[i] = p;
 }
	

三 数组中存放的是不同的对象

 Person[] ps = new Person[3];
 for(int i = 0; i < ps.length; i++){
 	Person p = new Person();
	ps[i] = p;
 }

对象的关联

代码:

class Teacher{
	String name;
	Dog dog;
}

class Dog{
	String name;
	int age;
}

		//创建一个老师的对象
		Teacher teacher = new Teacher();
		//给老师的属性赋值
		teacher.name = "苍老师";
		
		//创建一只狗
		Dog dog = new Dog();
		//给狗的属性赋值
		dog.name = "泰迪";
		dog.age = 2;
		
		//让老师的对象和狗的对象关联起来
		teacher.dog = dog;

单例设计模式

一 设计模式 :设计模式是在大量的实践中总结和理论化之后的代码结构、
编程风格、以及解决问题的思考方式

二 常见的设计模式:常见的有23种设计模式 -
单例设计模式,代理设计模式,工厂设计模式,观察者设计模式,装饰设计模式…

三 单例设计模式的作用 : 某个类的对象在当前工程中只有一个

四 单例设计模式实现的方式 :懒汉式 vs 饿汉式

四 饿汉式和懒汉式的区别?

饿汉式 :1.线程安全的
懒汉式 :1.线程不安全的 2.延迟了对象的创建时机一定上程度上节省了内存的开销。(懒加载)

五 代码

//饿汉式

class Bank{
	//1.私有化构造器
	private Bank(){}
	//2.创建一个该类的对象,并使用static修饰
	private static Bank bank = new Bank();
	//3.提供一个公共的方法,用来返回对象。该方法必须是静态方法(可以通过类名调用该方法)。
	public static Bank getInstance(){
		return bank;
	}
}

//懒汉式

class Computer{
	//1.私有化构造器
	private Computer(){}
	//2.提供一个该类的对象的声明
	private static Computer computer = null;
	//3.提供一个公共的方法,并返回对象
	public static Computer getInstance(){
		//4.创建对象
		if(computer == null){
			computer = new Computer();
		}
		return computer;
	}
}

main方法

说明:
1.main方法是程序的入口
2.main方法的形参名可以改,其它都不允许修改
3.一个程序只有一个main方法。

如何给main方法传参
1.通过eclipse传数据 :
①先运行该程序 ②右键 -> RunAs -> RunConfigurations -> 左边类名,右边Arguments
->program Arguments中写需要传的数据 (默认都是String

2.通过命令行的方式传数据 : java 字节码文件名 参数1 参数2 参数3 …

接口

一 接口的声明格式

权限修饰符(public/缺省的) interface 接口名{

}

二 说明 :
1.接口和类是并列存在的关系。
2.接口不能被实例化
3.接口中只能常量和抽象方法(JDK1.8之前
4.接口和接口之间是继承关系而且是多继承。 接口1 extends 接口2,接口3…
5.类和接口的关系是实现关系而且是多实现。 类 implments 接口1 ,接口2…
6.类实现接口后必须重写接口中的所抽象方法,如果不想重写那么该类可以变成抽象类
7.接口和类之间的多态性

三 接口和类的多态性
1.接口的类型指向实现类的对象
USB usb = new Mouse();

注意 :①必须有实现关系 ②必须有重写方法的重写 ③接口的类型指向实现类的对象
2.判断类型

if(usb instanceof Mouse){
		}

3.向下转型
Mouse m = (Mouse)usb;

四 1.8新特性

在JDK1.8开始接口中可以有 抽象方法,常量,静态方法,默认方法

说明
1.如何调用接口中的静态方法:接口名.静态方法名
2.如何调用接口中的默认方法 :实现类的对象.默认方法名
3.类优先原则 :一个类继承的父类和实现的接口(默认方法)中有同名同参的方法,
那么调用的是父类中的。
4.接口冲突 : 一个类实现多个接口,多个接口(默认方法)中有同名同参的方法,
这时就会发生接口冲突。
5.解决接口冲突 : 实现类只需要去重写该方法即可。
再通过该类的对象调用此方法时调用的是重写的方法。
6.实现类重写接口中的默认方法后调用接口中的默认方法:接口名.super.默认方法名

Object类

1.Object类是所类的父类
2.如果一个类没有显示继承其它类那么默认继承Object类
3.Obejct只一个空参的构造器
4.Object中11个方法,其中个wait方法是重载方法

equals方法:

一 Object中的equals方法:

  public boolean equals(Object obj) {
   		return (this == obj);
	  }

二 像String,Date等核心类库基本上都重写了equals方法,用来比较内容。

三 自定义类如果没重写equals方法那么调用的是Object中的equals方法用来比较内容。
但是我们自定义类的时候通常都会重写equals方法,用来比较内容.

toString方法

toString方法 :

   一  Object中的toString方法
  		  public String toString() {
        		return getClass().getName() + "@" + Integer.toHexString(hashCode());
    	  	  }

二 像String,Date等核心类库基本上都重写了toString方法,用来输出对象中的内容。

三 自定义类如果没重写toString方法那么调用的是Object中的toString方法用来输出对象的地址值。
但是我们自定义类的时候通常都会重写toString方法,用来输出对象的内容.

注意 :当我们输出对象的名字时,默认调用的是当前对象的toString方法

[面试题] == 和 equals的区别是什么?
== :

基本数据类型,比较的是具体的内容是否相等。
引用数据类型,比较的是地址值是否相等。(两个变量指向的是否是同一个对象)
equals :
如果没重写Object中的方法比的是地址值
如果重写了equals方法那么通常比较的是内容

单元测试

单元测试
1.导包 -
①直接在方法上写一个@Test鼠标放上去就会提示
②在package视图中 - 鼠标在项目上右键 -> BuildPath -> AddLibraries ->JUnit ->JUnit4

2.使用
① 在方法上添加一个@Test
② 右键 - RunAs -> JUnitTest

3.注意
①单元测试的方法必须是public修饰,没返回值,没形参
②单元测试方法所在的类必须是public修饰
③执行的时候如果是绿条说明成功,红条说明失败
④运行哪个方法就把光标放在那个方法的名字上,然后右键运行
⑤不要在项目中随意使用单元测试方法 - 单元测试方法用来测试类中,测试类在测试的包中。

包装类

在这里插入图片描述
String类、基本数据类型、包装类之间的转换
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值