JAVASE基础知识总结之面向对象

面向对象三大特征

一.封装

封装概述

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处:

隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。

封装原则:

 将不需要对外提供的内容都隐藏起来。
 把属性隐藏,提供公共方法对其访问。

private关键字

是一个权限修饰符。
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问。

private最常见的应用:

把成员变量用private修饰
提供对应的getXxx()/setXxx()方法

构造方法

构造方法作用概述

给对象的数据进行初始化
构造方法特点:
     方法名与类名相同
     没有返回值类型,连void都没有
     没有具体的返回值

与普通方法一样,构造方法也可以重载,在一个类中可以定义多个构造方法,
只要每个构造方法的参数类型或参数个数不同即可。在创建对象时,
可以通过调用不同的构造方法来为不同的属性进行赋值。
   ***补充:匿名对象:***
		概念:没有名字的对象!
		之前的格式:
			类名  对象名 = new 类名() ;	
		匿名对象的创建格式:
				new 类名() ;
				
		特点:
			1)可以作为形式参数传递!
			2)匿名对象不要使用多次,使用一次即可!
				匿名对象,应用场景:
						移动端:android 大量去使用匿名对象  或者匿名内部类				
				匿名对象创建完毕,使用完毕就立即被回收(节省内存空间)

this关键字

this:代表所在类的对象引用
为了区分:局部变量隐藏成员变量: this.成员变量;
记住:
     方法被哪个对象调用,this就代表那个对象
什么时候使用this呢?
       局部变量隐藏成员变量
       其他用法后面和super一起讲解

static关键字

static关键字的特点:

	1)被static修饰的成员,随着类的加载而加载 (类就加载一次!)
	  javac xxx.java---->xxx.class  (字节码文件)
	  java xxx ---->运行---->加载类的时候,对象还没开始创建
	  
	2)优先于对象存在 
			对象的创建是在类加载的后面
			
	3)有被共享,共用的意思
		这句话:告诉我们什么时候使用static修饰变量,方法
			能够描述被共用,共享的时候
			
			举例:
				班级号可以被共用
				饮水机:可以被共用
				
				水杯中的水(不能共用)
				
	4)最重要的特点:
		被static修饰的变量以及方法可以被类名直接访问!(推荐类名直接访问)
			
		这些被static修饰变量/方法,也可以通过对象名来访问(不推荐!)
	static关键字注意事项
         在静态方法中是没有this关键字的
         静态方法只能访问静态的成员变量和静态的成员方法	

静态变量与成员变量的区别:

- 所属不同
      静态变量属于类,所以也称为为类变量
      成员变量属于对象,所以也称为实例变量(对象变量)
- 内存中位置不同
      静态变量存储于方法区的静态区
      成员变量存储于堆内存
- 生命周期不同
      静态变量随着类的加载而加载,随着类的消失而消失
      成员变量随着对象的创建而存在,随着对象的消失而消失
- 调用不同
      静态变量可以通过类名调用,也可以通过对象调用
      成员变量只能通过对象名调用

Java中代码块:

	使用{}包起来的内容,就称为代码块!
	
	分类:
		1)局部代码块
			在局部位置中定义的{},作用:限定变量的声明周期
		2)构造代码块
			在类的成员位置中定义{},
				特点:在当前类中,有限执行构造代码块,然后在执行构造方法...
				(每次执行构造方法之前先执行构造代码块)
				构造代码块的作用:对当前类的数据进行初始化!(很少用,笔试题!)
		3)静态代码块
		
			在{}的前面加上static
			static{
				....
			}
			
			静态代码块随着的类的加载而加载,由于类加载一次,静态代码块执行一次!
	
		
优先级:
(1)静态代码块在加载类的时候执行,由于类只在第一次使用时
     被加载,且只加载一次,因此静态代码块只执行一次。在实
     际开发中,经常有一些代码需要在类加载时就执行,比如加
     载数据库驱动,这些代码就应该放在静态代码块中。如果包
     含多个静态代码块,先定义的先执行。
(2)构造代码块在创建类的实例对象时执行,也就是说每创建类
      的一个实例对象,都会执行一次构造代码块。从运行结果可
      以看到,构造代码块先于构造方法执行。因此在实际开发中
      可以把重载构造方法中重复的代码抽取到构造代码块中执
      行。
(3)局部代码块定义在方法中,它在方法被调用的时候执行。使
      用局部代码块是为了限制变量的生命周期,使得变量在使用
      完毕后会被尽快回收,从而节省内存空间,前面学习的if语
      句、for语句都使用了局部代码块。
		
	   静态代码块 > 构造代码块 >构造方法

设计模式

设计模式概述

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式不是一种方法和技术,而是一种思想
设计模式和具体的语言无关,学习设计模式就是要建立面向对象的思想,尽可能的面向接口编程,
低耦合,高内聚,是设计的程序可复用
学习设计模式能够促进对面向对象思想的理解,反之亦然。它们相辅相成

单例模式:

   单例模式是Java中的一种设计模式,它是在设计一个类时,需要保证在整个程序运行期间对该类
   只存在一个实例对象。
优点:在系统只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式
可以提高系统的性能。

那么,如何保证类在内存中只有一个对象?
(1)把构造方法私有化;
(2)在成员位置自己创建一个对象;
(3)通过一个公共方法提供访问.
举例:
 (1)饿汉式   类加载就创建对象
 class Student1{
   
     private Student1(){
   }
     private static Student1 s=new Student1();
     public static Student1 getS(){
   
            return s;
     }
   }
(2)懒汉式   用时创建对象
class Student1{
   
     private Student1(){
   }
     private static Student1 s=null;
     public synchronized static Student1 getS(){
   
            if(s==null){
   
	  s=new Student1();		
            }
            return s;
     }
 }

main方法详解

public static void main(String[] args) {
   ...}
(1)public:公共的,访问权限是最大的。由于main方法是被jvm调用,所以权限要够大。
(2)static:静态的,不需要创建对象,通过类名就可以。方便jvm的调用。
(3)void:因为我们曾经说过,方法的返回值是返回给调用者,而main方法是被jvm调用。
       你返回内容给jvm没有意义。
(4)main:是一个常见的方法入口。我见过的语言都是以main作为入口。
(5)String[] args:这是一个字符串数组。

二.继承

1.继承的概念

将多个类的共性内容抽取出来放在独立的类中,让着多个类和当前类产生一种关系,extends:继承关系
   通过extends关键字可以实现类与类的继承
             class 子类名 extends 父类名 {} 
 Java中的开发原则:
         低耦合,高内聚 

2.继承的特点以及继承的好处

	1)Java中,对于类与类之间的只支持单继承,不支持多继承
	2)但是,可以多层继承
	
	好处:
		1)提高了代码的复用性
		2)提高了代码的维护性
		3)类和类之间的继承关系,是多态的前提条件!

3.继承中构造方法的访问问题,子类如何访问父类的构造方法

子类的所有构造方法,默认父类的无参构造方法;
如果父类中没有给出无参构造方法,子类构造方法报错,
	1)手动给出父类无参构造方法
	2)通过super(xxx):访问父类的有参构造方法
	3)通过在子类的有参构造方法中通过this()访问本类的无参构造方法,
				然后在通过本类的无参构造方法里面:super(xxx)访问父类的有参构造方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值