教材学习总结
第四章 类与对象
1、编程语言发展阶段
面向机器语言→面向过程语言→面向对象语言
面向对象编程的特性:
封装性、继承、多态
2、类(一种数据类型,用于创建具体实例(对象),抽象出一类事物的属性和行为)
类声明的变量被称为对象变量
类的定义包括两部分:类声明和类体
class 类名{
类体的内容
}
类声明
class XXX{...}
(1)类名首字母大写
(2)单词复合而成
类体(大括号“{}”及其里面的内容)
*变量的声明:用来储存属性的值(体现对象的属性)(含有方法变量和域变量)
*方法的定义:方法可以对类中声明的变量进行操作,即给出算法
class laber{
float above; //变量声明
float boyyom;
float height;
float area;
float computerArea(){ //定义方法computerArea
area=(above+bottom)*height/2.0f;
return area;
}
void setHeight(float h){ //定义方法setHeight
height=h;
}}
成员变量
基本类型:整型,浮点型,字符型,逻辑类型;
引用类型:数组,对象和接口
有效范围:在整个类内都有效,与在类体中的先后位置无关
编程风格:一行只声明一个变量、首单词或首字母小写
方法(方法头和方法体)
int getSum(int n){ //定义方法,参数变量n是局部变量
int sum=0; //声明局部变量sum
for(inti=1;i<=n;i++){
sum=sum+i;
}
return sum;
}
局部变量只在方法内有效,而且与其声明的位置有关。方法参数在整个方法内有效
*如果成员变量和局部变量名字相同,成员变量将被隐藏,方法暂时失效
*局部变量没有默认值,成员变量有
构造方法与对象的创建
(1)构造方法
类构造方法的名字必须与类完全相同且没有类型。一个类中可以有多个构造方法,但参数个数或者参数列表中的某个参数必须不同。
*如果类内定义了构造方法,java则不提供默认构造方法
构造方法例子
class point{
int x,y;
point() {
x=1;
y=1;
}
point(int a,int b){
x=a;
y=b;
}}
void point(int a,int b){ //不是构造方法,,该方法类型为void
x=a;
y=b;
}
int point(){ //不是构造方法,方法类型为int
return 12;
}}
(2)创建对象
XiyoujiRenwu zhubajie; //声明对象
zhubajie=new XiyoujiRenwu(); //为对象分配变量(使用new和默认构造方法)
Point p1,p2;
p1=new Point(10,10);
p2=new Point(23,35);
(3)使用对象
对象.变量
对象.方法
zhubajie.height=180.f
zhubajie.new XiyoujiRenwu();
体现封装性
(4)对象的引用和实体
*避免使用空对象
类与程序的基本结构
源文件rect.java
public class rect{
double width;
double height;
double getArea(){
double area=width*height;
return area;
}}
源文件Lader.java
public class Lader{
double above;
double bottom;
double height;
doublr getArea(){
return (above+bottom)*height/2;
}}
源文件example.java
public class example{
publec static void main(String arg[]){
rect ractangle=new rect();
rantangle.width=109.87;
ractangle.height=25.18;
double area=ractangle.getArea();
System.out.println("矩形的面积"+area);
Lader lader=new Lader();
lader.above=10.798;
lader.bottom=156.65;
lader.height=18.12;
area=lader.getArea();
System.out.println("梯形的面积"+area);
}}
参数传值
*不可以向int型参数传递一个float值,但可以向double型传递一个float值
comouter com =new computer();
int m=100;
int n=200;
int result=com.add(m,n); //将m、n值传值给参数x,y
result=com.add(120+m,n*10+8); //将表达式120+m和n*10+8传值给参数x,y
对象的组合
实例成员与成员
class Dog{
float x; //实例变量
static int y; //类变量(static变量,静态变量)
}
实例变量:创建对象后、实例方法都可以访问
类变量:类声明后、用类方法访问
定义:
class A{
int a;
float max(float x,float y){ //实例方法
.......
}
static float jerry(){ //类方法
....
}
static void speak(String s){ //类方法
....}}
方法重载
两种多态:重写与重载
类方法中对象行为的多态性是方法的重载
class people{ //方法的重载
float hello(int a,int b){
return a+b;
}
float hello(long a,int b){
return a-b;
}
double hello(double a,int b){
return a*b;
}
this关键字
this.成员变量;
包
import语句
java.lang 基本
javax.swing 图形文本窗口
java.io 输入输出类
java.sql 操作数据库的类
Java.net 实现网络功能的类
访问权限
访问权限级别从高到低public、protected、friendly、private
作用域 | 当前类 | 同-package | 子孙类 | 其他package |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
friendly | √ | √ | × | × |
private | √ | × | × | × |
*不能用protected和private修饰类