面向对象第二章知识点总结

面向对象第二章

java具备描述对象以及对象之间关系的能力,因此是面向对象的编程语言面对对象有2大要素和四大特征两大要素:类与对象
四大特征:封装,继承,多态,抽象
构造器方法是和类同名的方法,但是没有返回值 (连void 都无)
构造器方法配合new关键字可以创建对象,分配内存

eg:

public static void main(String [ ] args){
	iphone m = new iphone();
	//注:等号左边是创建对象,等号右边相多于new了一个方法
	}
	public class phone{...}
				new     phone ();
			
//使用new关键字创建对象       
//phone()这是一个构造器方法

无参构造法:

public iphone(){
	}

有参构造法

public iphone (int a, int b, int c){
			wigth = a;
			hight = b;
			wigth = c;
	}
**面向对象和面向过程的区别**:

面向过程 :主要关注点是:实现的具体过程,因果关系
优点:对于业务逻辑比较简单的程序,可快去开发
缺点:很难解决非常复杂的业务逻辑,另外面向过程方式导致软件元素之间的“合度”非常高,只要有环境受影响,整个系统受影响最终导致软件“扩展力”差
面向对象 :主要关注点是:对象(独立体)能完成哪些功能
优点:“合度”低,扩展能力强,更容易解决现实世界当中更复杂的业务逻辑,组件实用性强
缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计
object常用方法

方法名说明
getClass返回此运行objwct的类
hash Code返回对象的哈希码 用来比较大小
cquals判断其他对象与此对象是否相等
clone创建并返回此对象的一个副本
toString返回对象的字符串表示
notify唤醒在此对象监视器上等待的单个线程
notify All唤醒在此对象监视器上等待的所有线程
wait使当前对象的线程等待tim eout时长
finalice垃圾回收时调动读方法

this关键字 (方法中的变量名和属性的名字一样)
this.名字 就把其变成了属性
用法this. +名字

有参构造和无参构造重名没报错原因?
方法重载 :
1.必须在同一个类里 。
2.方法名相同 。
3.参数列表方法参数的个数或参数类型不同 。
4.在使用this调用自身的其他构造方法时 ,只能排为第一条语句
5.与方法返回值和方法修饰符没有任何关系

static关键字
可修饰:变量 常量 方法 代码块

不建议使用static原因 :
1.静态的任何东西都属于类 ,在类加载的时候就给内存了 ,都可以进行运算。
2.非静态的任何东西都属于表对象 ,在new时候给内存 。
3.静态的共有内存 ,静态的先被加载 ,非静态的后被加载 。
4.静态的先被加载,就不需要对象点对调用 ,利用类名点就可 ,可在new前面

*用static修饰常量的好处:
在创建类的多个对象时,用static修饰的常量在内存中只有一份拷贝。不用static修饰则可能有多份拷贝。

Static修饰变量
1.被static修饰的成员变量属于类,不属于某个对象(也就是说:多个对象访问或修改static修饰
的成员变量时,其中一个对象将static成员变量进行了修改,其它的对象的static成员变量值跟
着改变,即多个对象共享同一个static成员变量。
2.被static修饰的成员,可以通过类名直接访问。
3.在非静态上下文中,不能访问非静态的内容,不能使用this/uper。
4.在非静态中,可以访问静态中的变量。
toString()方法:
1名字是toString
快捷键长按 Alt +tshift+s
2.返回对象字符串
eg:

//在类中写:
 public  String  toString() {
                         retum  wight+"  "+hight+"  "+weight
 	}
//测试类
//两个调用方法:	       
System.out.println(beta);//直接写对象名就可调用
		
System.out.println(beta2.toString());//以String类型打印输出

静态代码块会优先加载;无参构造和静态方法。
谁写在前面谁先加载

eg:

public class person1 {
	//单个类初始化执行顺序
	static String name;
	static final int AGE=23;
	char sex;
	public person1() {
		System.out.println("无参构造法");
	}
	public static void eat() {
		System.out.println("静态的吃的方法");
	}
	static {
		System.out.println("静态代码块");
	}
	
	public static void main(String [] args) {
		person1.eat();
		person1 beta = new person1();
		//静态代码块会优先加载,其他的谁写在前面谁先加载
		
		System.out.println(person1.AGE);
	}

}

内部类
在一个类的内部写的类就称为内部类。内部类可以是public也可是private。

使用内部类的原因:
(1)内部类方法可以访问该类定义所在的作用域
中的数据,包括和私有的数据
(2)内部类可以队同一个包中的其他类隐藏起来
(3)当想要定义一个回调函数且不想编写大量代码时,使用匿名(anony mous)内部类比较便捷
(4)某种意义上另类的多继承

在java中 ,close 是关闭意识。比如sessin,close();意思就是关闭sessin同时释放内存

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值