菜鸟到大牛之——初识java语言(类和面向对象)

面向对象

面向对象奇数是以对象为核心,以消息为驱动的软件建模奇数。它可以吧软件系统看做是各种对象的集合,对象就是最小的子系统,一组组相关的对象就可以组成一个成功的系统。
*

类和对象

类和对象的关系:类是对象的一个模板,对象是类的实体。
比如:动物是一个类,猫就是一个对象,动物是猫的模板,反之猫也就是动物的一个实体。

类(class)的定义

class 类名{
//属性
访问权限 类型 方法(形参){
//方法
}
}
例如:class Animal{ //定义一个Animal类
public String name; //动物的属性
int age;
public void eat(){ //定义一个吃的方法
System.out.println(“这是动物在吃!”);
}
}
从上面这个代码可知道:方法要定义在类的里面。
类属于引用数据类型,进行引用传递时,传递的是堆内存的使用权

对象

对象的产生方式:
(1).为对象开辟一个内存。
(2)调用合适的构造函数(构造函数不止有一个,且构造函数可以发生重载)。
创建一个对象:类名 对象名 = new 类名();//对象名只要是合法的标识符就行
例如:Student student=new Student();
可以使用对象名.的方式来访问类中的元素。
在这里插入图片描述

代码块

代码块分为:普通代码块,构造块,静态代码块和同步代码块
静态代码块:由static定义的代码块,静态代码块可以放在主类中,也可以放在除了主类以外的地方。
普通代码块:普通代码块定义在普通方法中,直接用{ }定义。
构造块(构造函数):定义在类中,不加任何修饰符。
下面我们来看看它们在程序中具体是怎么执行的吧:
在这里插入图片描述
从上面的图片中我们也看出:代码块的执行顺序为静态代码块(因为静态代码块会在类加载的时候就进行执行,所以优先执行)–>实例代码块–>构造函数。
特别注意:如果一个类中既有静态代码块,又有静态方法,就按照谁在前面先执行的顺序进行执行。

面向对象的三种基本特征:

1.封装性:就是把客观的事物封装成抽象的类,并可以吧自己的属性和方法让自己信任的类或者对象操作,对不可信的进行隐藏。
用private来实现封装,要想外部成员要访问封装的属性和方法,需要在此内部类里面提供set和get方法
2.继承性:简单的来说就是代码的重用(派生类可以实现基类的所有功能,并且可以在无需编写原来代码的情况下,对基类进行扩展)。
继承使用关键字extends来实现。在JAVA语言中只能单继承
比如:class Dog extends Animal //Dog类是子类(派生类),Animal类是父类(基类)。子类可以继承父类除了构造函数之外的所有属性和方法,并且可以帮助父类构造。如果父类的属性或方法是私有的,那么只有通过隐世继承来获取,这个时候就要提供Set和get方法。
在这里插入图片描述
继承的优点:
1.提高了代码的复用性。
2.提高了代码的维护性。
3.让类与类之间产生了练习,是多态的前提。
继承的缺点:
1.增加了类之间的耦合。
3.多态性:一个类实例的相同方法在不同的情况下有不同的表现形式。多态可以让不同内部结构的对象可以共享相同的外部接口。
多态存在的条件:
(1)需要继承和实现的关系。
(2)需要有重写的操作。
(3)需要父类引用子类的对象。

四种访问权限

四种访问权限有:public 、包访问权限、 protected 、 private。
它们从高到低的排序为:public>protected>包访问权限>private

关键字

final关键字
1.final修饰的属性和方法就变成了常量,不能被修改。
2.一个类被final修饰后,该类的所有方法默认都会加上final修饰。
3.final可以修饰变量、属性和方法。
super关键字
super();//调用基类的构造函数
super.data //访问基类的属性
super.fun();//调用基类的成员函数
例如:super(name,age)//调用父类的构造函数
Class student extends Persion{
public Student(String name,int age, String school){
super(name,age);//调用父类的构造函数 必须放在第一行
this.school=school;
}
}
this关键字
1.this表示对当前对象的引用。
2.通过“this.属性”可以调用本类中的属性;
3.通过“this.方法”可以调用本类中的其他方法;
static关键字
1.用static修饰的成员变量表示静态变量,可以通过类名点来访问。
2.用static修饰的成员方法为静态方法,可以通过类名点来访问。
3.用static修饰的程序代码块表示静态代码块,导尿管JAVA虚拟机加载类时,就会执行此代码块。
方法的重载和重写的区别
在这里插入图片描述
下面罗列几个经常被问到的面试问题(欢迎大家提出自己的宝贵意见)
1.你是怎么理解this的?
答:this代表当前对象的引用,当前对象的地址。
2.实例内部类对象是否有额外的内存消耗?
答:实例内部类拥有外层类的this引用。
3.静态内部类能否访问外部类的实例数据成员?
答:可以,在构造内部类的时候给他传一个外部类变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值