面向对象编程——类与对象(上)

一,面向对象编程:
面向对象的三大特征:
1,封装性:就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏, 即内部操作对外部而言不可见(保护性)。
2,继承性:它可以使用现有类的所有功能,并且在无需重新编写原来的类的情况下对这些功能进行扩展。
3,多态性:指一个类实例的相同方法在不同情形下有不同表现形式,多态机制使具有不同内部结构的对象可以共享相同的外部接口。
面向对象的最大特征:对现实生活进行抽象。
二,类
类是指共性的概念(自行车的设计图),对象指的是一个具体的,可以使用的事物(一辆辆的自行车)。
首先产生类(类是生产对象的蓝图),然后才可以产生对象,对象的所有行为,一定在类中进行了完整的定义。
1,定义:class 类名称{
1,属性;
2,方法;
3,构造方法;
}
2,如何定义属性:修饰符(modifer) 变量类型 变量名称;// 可以为变量赋值,不赋值时为默认值(元素类型的默认值)
3,如何定义方法:修饰符(modifer) 返回值类型 方法名称(形参类型){
}
4,如何定义构造方法:修饰符(modifer) 类名称 (形参列表){
}
①方法名称必须与类名称相同
②构造方法没有返回值类型声明
③每一个类中一定至少存在一个构造方法(没有明确定义,则系统会自动生成一个无参构造)
三,对象
1,构造对象的语法/对象实例化的语法(create object/instance):
①类名称 ②对象名称 = ③new ④类名称();
①任何对象都应该有其对应的类,类是对象的蓝图
②是唯一的标记,引用一块堆内存
③表示开辟新的堆内存空间
④构造方法
一个文件中只能有一个public 的类
2,对象全部存放在堆区,主要保存属性。
Person p=new Person( ); //p是一个person类型的引用,指向一个Person类型的对象
3.Person p=new Person(“xxx”,2,1);
①new 计算对象需要的内存大小,开辟空间,初始化为0
②Person(“xxx”,2,1)调用构造方法,对属性初始化
③p构造方法调用结束,返回一个指向新对象的引用
4,没有明确的定义过构造方法,编译器就会补一个构造方法,一旦定义过构造方法了,无论是什么样的构造方法,默认这个无参的构造 方法就不再添加了,构造方法允许重载。
5,对象中存储的最主要的就是属性,也可以找到方法区中对象的相对应的类。
6,如何访问对象的属性:
①在类的内部:

class Person(){
 int a;
 int b;
 public void methodA(){
  a=10;//在类的内部直接访问对象的属性
  methodB();
 }
 public void methodB(){
  
 }
}

②在类的外部:

class Main{
 public void static main(){
  Person p=new Person();
  p.a;//在类的外部访问对象的属性
  p.methodA();
 }
}

总结:内部:属性:直接通过属性名称访问
方法:直接通过方法名称调用
外部:属性:引用.属性名称
方法:引用.方法名称(实参列表)
7,容易混淆的点:嵌套调用: System.out.println(Arrays.tostring(rotate(new int[ ]{1,2,3,4,5},3)));
int[ ] tmp1=new int[ ] {1,2,3,4,5}
int[ ] tmp2=rotate(tmp1,3)
String tmp3=Array.toString(tmp2)
System.out.println(tmp3)
链式调用: class A{
public A create(){
return new A;// A tmp1=new A();return tmp1;
}
}
class B{
public static void main(){
new A ().create().create.create.create// A tmp1=new A();
} A tmp2=tmp1.create()
A tmp3=tmp2.create()
A tmp4=tmp3.create()
}

8,Person p=null;//定义了一个没有指向任何对象的person类型的引用(类类型的引用)
Person p=new Person();//①定义了一个person类型的对象
②定义了一个指向Person类型的对象的Person类型的引用(类类型的引用)
引用类型和指向的对象类型是两回事
四, This关键字
1,在构造方法中调用其它构造方法,调用语句必须出现在第一行
2,通过this访问属性或方法(一般出现在命名遮挡的时候(name shadowing))
3,this代表当前对象的引用(corrent object)
普通属性和普通方法其实都绑定着一个隐含的对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值