Java学习笔记~关于类与对象的总结01
2017-09-16 18:24
555 查看
面向对象编程的三个特性
1.封装性:将数据和对数据的操作封装在一起。
- 继承:子类可以继承父类的数据和数据上的操作,同时又可以增加子类 独有的数据与操作。
3.多态
- 操作名称的多态(重载)
- 和继承有关的多态(重写)
变量可分为成员变量和局部变量
成员变量又可以分为实例变量和类变量(Static变量)
关于实例变量和类变量应该注意一点
类变量在内存中只占一份存储空间,由同一个类创建的所有对象共享一个类变量
实例变量在每次有新对象分配内存的时候都为之新开辟一个独立的空间,即不同的对象有实例变量的不同副本
成员变量的隐藏:如果成员变量的名字与成员变量的名字相同,则成员变量被隐藏,若要在方法内使用被隐藏的成员变量,必须要使用关键字this
方法重载是功能的多态性,即可以向功能(方法)传递不同的消息,以便让对象根据相应的消息来产生对应的行为,一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,要么参数的个数不同,要么参数的类型不同
举个例子
例子
在定义类的成员变量时可以同时赋予初值
创建一个对象包括 对象的声明和为对象分配内存两个步骤
对象的声明
为声明的对象分配内存
例子
1.封装性:将数据和对数据的操作封装在一起。
- 继承:子类可以继承父类的数据和数据上的操作,同时又可以增加子类 独有的数据与操作。
3.多态
- 操作名称的多态(重载)
- 和继承有关的多态(重写)
类
class 类名 //类的声明 { 类体的内容 //类体由变量的定义(刻画属性)和方法的定义(刻画功能) }
变量可分为成员变量和局部变量
成员变量又可以分为实例变量和类变量(Static变量)
关于实例变量和类变量应该注意一点
类变量在内存中只占一份存储空间,由同一个类创建的所有对象共享一个类变量
实例变量在每次有新对象分配内存的时候都为之新开辟一个独立的空间,即不同的对象有实例变量的不同副本
成员变量的隐藏:如果成员变量的名字与成员变量的名字相同,则成员变量被隐藏,若要在方法内使用被隐藏的成员变量,必须要使用关键字this
class 三角形 { float sideA,sideB,sideC,lengthSum; void setSide(float sideA,float sideB,float sideC) { this.sideA=sideA; this.sideB=sideB; this.sideC=sideC; } }
方法
方法重载
Java中存在两种多态:重载和重写方法重载是功能的多态性,即可以向功能(方法)传递不同的消息,以便让对象根据相应的消息来产生对应的行为,一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,要么参数的个数不同,要么参数的类型不同
举个例子
class Area { float getArea(float r) { return 3.14*r*r; } double getArea(float x,int y) //应注意的是方法的返回类型和参数的名字不参与比较 { return x*y; } }
构造方法
构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载例子
class 梯形 { float 上底,下底,高; 梯形() { 上底=60; 下底=100; 高=20; } 梯形(float x,int y,float h) { 上底=x; 下底=y; 高=h; } }
应该注意的问题
对成员变量的操作只能在方法中,方法可以对成员变量和方法体中自己定义的局部变量进行操作在定义类的成员变量时可以同时赋予初值
class A { int a=12; //定义的同时赋予初值 float b=12.56f; } class B { int a ; float b; a=12; //非法,因为对成员变量的操作只能放在方法中 b=23.42f; //非法 } 应该注意的是,类方法只能对类变量进行操作,类方法只能调用类方法
对象
对象是类的一个实例创建一个对象包括 对象的声明和为对象分配内存两个步骤
对象的声明
类名 对象名;
为声明的对象分配内存
例子
class Dragons { double height, weight; String weapons; } class A { public static void main(String[] args) { Dragons Dovakkin;//声明对象 Dovakkin=new Dragons(); //为对象分配内存,使用new 运算符和默认的构造方法 } }
//若类中定义了构造方法,Java不提供默认的构造方法,因此在类中定义了一个含参数的构造方法的前提下,使用默认的构造方法是非法的 class point { int x,y; point(int a ,int b) { x=a; y=b; } } public class Test { public static void main(String[] args) { point p1,p2; p1=new point(10,10); //合法 p2=new point(); //非法 } }
相关文章推荐
- 网易云课堂Java进阶学习笔记系列01 -- 第3周 对象容器
- Java基础学习中,关于面向对象中多态、抽象类、接口的总结
- Java学习笔记-关于默认类型或访问权限的总结
- JAVA学习笔记01 -- 面向对象基础
- 【学习笔记01】java面向对象-类、对象
- 我的java学习笔记(5)关于对象构造
- java学习笔记1-关于throw和throws的一点总结
- Java学习笔记(84)----------关于 Java 对象序列化你不知道的 5 件事
- Java学习笔记之对象传值和引用总结
- 第五天01 JAVA基础语法(类与对象)(学习笔记)
- 黑马程序员-自己总结的java学习笔记(3)java字符串对象。
- 【学习笔记】java面向对象复习01
- Thinking in java学习笔记之持有对象总结
- [学习笔记]关于JavaBran的部署--部署class
- 关于Oracle数据库的用户对象配置以及数据镜像的总结--转载于项目组周朝勇笔记
- java学习笔记,关于java的一些基础知识,适用于初学者,第一节
- JAVA2核心技术卷1 学习笔记3 对象和类
- Java 学习笔记 (2) -Java 对象 间的 传递 赋值
- java学习笔记:引用与对象(1)
- Java 对象的 toString() 方法 -Java 学习笔记 (16)