Java基础学习笔记 第一部分 part 4

1.类是模子,确定对象将会拥有的特征(属性)和行为(方法)
对象具有唯一的身份,状态和行为,状态限定这个对象,而行为定义它可以做什么
类是定义相同类型对象的结构
2.基本类型和引用类型变量之间的区别:
每个变量表示容纳数值的内存单元。
-对于基本类型的变量来说,这个数值是基本类型的数值。
-对于引用类型的变量来说,这个数值是对象储存位置的引用;当声明引用类型的变量时,这个变量保存特殊的java数值null,它表示这个变量没有引用任何对象,一 旦对象被创建,它的引用就可以被赋值给一个变量
3.对象的使用步骤

//1.创建对象
Telphone phone=new Telphone();  //类名 对象名=new 类名();
    //创建可分为以下过程:1)声明:ClassName objectReference;
   (2)创建一个对象并将其引用赋值给objectReference: objectReference=new ClassName();
//2.使用对象
phone.screen=5;  //应用对象的属性:对象名.属性 //给screen属性赋值5
phone.sendMessage();  //应用对象的方法:对象名.方法名  //调用sendMessage()方法

4.无用单元收集:java运行时系统检测无用单元并自动地回收它占用的空间

5.访问对象的数据和方法:在创建对象后,可使用点符号访问它的数据和调用它的方法
objectReference.data引用对象的数据 objectReference.method(arguments)调用对象的方法

匿名对象:有时候一个对象不需要在以后被引用,在这种情况下,可以在创建对象时不将其明确地赋值给一个变量,如:

System.out.println(new objectReference().method());

注意:数据字段的默认值是null(引用类型),0(数字类型),false(boolean类型)和‘\u0000’(char类型)
在类中没被初始化,则java给它分配默认值0,但是不给方法内部的局部变量分配默认值

6.构造函数:用来初始化对象的数据 一个没有参数的构造函数被称为默认构造函数
(1)构造函数名称必须与类的名称相同
(2)构造函数没有返回值——即连void都没有
(3)当创建对象时,使用new操作符调用构造函数。构造函数担任初始化的角色
(4)构造函数可以被重载

8.存取器方法:私有的数据字段不能在定义该私有域的类外部通过直接引用被对象访问,为了使私有数据字段可以被访问,可以提供一个获取方法和一个设置方法
public returnType isPropertyName()

9.继承
注意:当向println方法传递对象时,对象调用toString方法
1.子类和超类:如果类C1是从另一个类C2派生来的,那么C1成为子类,C2成为超类
(子类从它的超类中继承功能,并且创建新的数据和方法。子类总是比超类具有更多功能)
2.保留字extends通知编译器: public class C1 extends C2{ }
3.如果一个对象是类A的实例,并且类A是类B的子类,那么这个对象也是类B的实例
4.super关键字:(调用超类构造函数,调用超类方法)
(1)调用超类构造函数: 语句super()调用它的超类默认的构造函数
super(parameters)调用和parameters匹配的超类的构造函数
注意: 以上两个语句必须出现在子类构造函数的第一行,并且这是调用超类构造函数的唯一方法
在子类中调用超类构造函数名会出现语法错误
与属性和方法不同,超类的构造函数不能在子类中被继承,他们只能使用关键字super从子类的构造函数中调用
如果没有显式使用关键字super,那么会自动调用超类中默认的构造函数

public class c1 extends c2{
  public static void main(String[] args){
    new c1();
   }

  public c1(){
    System.out.println("1111");
   }
  }

class c2 extends c3{
  public c2(){
    Sstem.out.println("2222");
    }
   }

class c3{
   public c3(){
     Sysstem.out.println("3333");
     }
   }

//输出   3333
         2222
         1111

注意:如果超类定义的构造函数不同于默认构造函数,那么子类不能使用超类默认的构造函数,因为在这种情况下,超类没有默认构造函数
(2)调用超类方法: super.method(parameters);

5.方法的重写:方法必须定义在子类中,并且要使用与其超类中相同的名称
注意:仅当实例方法是可访问的时,它才可以被重写。但是私有的方法不能被重写,因为它不能被外部类所访问。
如果在子类中定义的方法在超类中是私有的,则这两个方法就完全没有关系
注意:和实例方法相同,静态方法也是可以被继承的。然而,静态方法不能被重写。如果定义在超类中的静态方法重新定义在子类中,那么,定义在超类中的方法将被隐藏
6.Java中的每一个类都是从java.lang.Object类派生而来的。当类被定义后,如果没有指定继承,那么类的超类就是Object
7.Object类中的equals方法:测试两个对象是否相等 object1.equals(object2);
8.Object类中的toString方法返回代表这个对象的字符串,不过这个字符串不是很有用,通常要重写
9.clone方法: newObject=someObject.clone(); 该语句将someObject复制到新的内存地址,并且将新的对象引用赋给newObject
注意:不是所有的对象都可以复制。如果对象是可以复制的,那么它的类必须能够实现java.lang.Cloneable接口
另外:在java中,数组被当成对象,并且是Object的实例。clone方法还可以用来复制数组,下列语句使用clone方法将sourceArray复制到targetArray

int[] targetArray = (int[])sourceArray.clone();

10.final修饰符:使用final修饰符来声明类是最终的,使其不能成为父类
11.抽象类(有时超类很抽象,没有任何具体的实例,相当于一个框架,提供子类对象公共的特性(数据和方法)):
抽象类和普通类一样具有数据和方法,但不能使用new操作符创建抽象类的实例(因为是抽象的,并不能实现功能),但抽象类可以和数据类型一样使用;但仍可以定义自己的构造函数,可以在它的子类的构造函数中调用
抽象方法是没有实现的方法签名,它的实现由子类提供
抽象方法不能包含在非抽象类中。如果抽象超类的子类不能实现所有的抽象方法,则子类必须声明为抽象类
包含抽象方法的类必须是抽象的,但是可以声明包含非抽象方法的抽象类
子类可以是抽象的,即使他们的超类是具体的
12.多态性: 是指两个或多个属于不同类的对象,对于同一个消息(方法调用)作出不同响应的方式;子类对象可以同时作为其类的对象和其父类的对象来使用
动态绑定: 动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法
13.强制转换对象: 1.将子类对象强制转换为超类的变量时,不一定要显式强制转换,可隐式强制转换
2.将超类对象强制转换为子类的变量时,一定要用显式

//如GeometricObject是Circle的超类
 GeometricObject geoObject1 = new Circle(5);
//假定将geoObject1赋给Circle类型的变量
 Circle circle = (Circle)geoObject1;

注意:在强制转换前,一定要确认对象是那个类的实例,可以使用instanceof操作符来实现
注意:对象成员访问符(.)优先于强制转换操作符((ClassName) object) 使用圆括号可以保证强制转换优先于.操作符 如
((ClassName)object).methodName();
13.对象数组:实际上是引用变量数组

Circle[] circleArray=new Circle[10];
for(int i=0;i<circleArray.length;i++)
 circleArray[i]=new Circle();
//circleArray引用整个数组,circleArray[1]引用一个Circle对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值