自己学习java的简单笔记(三)

面向对象

面向对象的特点:①封装性②继承性③多态性
对象的的思想,类,
1、类:
①成员变量(全局变量)在类体中有效,方法体中可以调用,
②成员方法
③权限修饰符:public(本类,同包其他类或子类,其他包的类或子类都有效);
proteced(本类,同包其他类或子类都有效);
private(本类有效);
④局部变量:在方法体中有效,可以引用类中的方法和变量。
⑤this 关键字:引用类的成员变量和局部变量的方法和变量。
2、类的构造方法:
①构造方法没有返回值。
②构造方法的名称要与本类的名称相同。
3、静态变量、常量、方法:由static修饰的方法被称做静态变量、常量、方法。
①静态数据和静态方法的作用是为了提供共享数据或方法。
②java中规定不能将方法体内的局部变量声明为static的
③如果在执行类时,希望先执行类的初始化动作,可以使用static定义一个静态区域,
public class example{
static {
}
}
4、类的主方法:public static void main (String []args){}
5、对象的创建;(类名)Test test = new ();
6、访问对象的属性和行为的方法:对象.类成员
①如果希望成员变量不被其中任何一个对象改变,可以使用static关键字
7、对象的引用;Book book = new Book();
8、对象的比较:
① "=="是比较的内存里面的地址是否相同。
②equals比较的则是字符串的不同。
9、对象的销毁:每个对象都有生命周期,(java垃圾回收机制)
①何种对象会被Java虚拟机视为垃圾,对象引用超过其作用范围,这个对象将被视为垃圾。
对象赋值为null
还有两个方法回收垃圾
①并不一定保证100%执行:
②肯定会执行

对于类的一些注意事项

1、类名不允许冲突。完整路径,创建包,导入包。
2、final变量:
①final关键字可以用于变量的声明,一旦变量被设定,就不可以改变变量的值,通常,由final定义的变量为常量,例如,在类中定义的PI值,可以使用如下语句:
final double PI =3.14
再次对PI的值定义是无效的,java编译器不会接受。
②final关键字定义的变量必须在声明时对其进行复制操作。
③被定义的final变量需要使用大写字母命名,
④在java中定义全局变量,通常使用public static final 修饰,这样的常量只能在定义时被赋值。
3、final方法:
①定义为final方法不能被重写:
private final void test(){ }
②定义为final方法不能被继承:
final 类名{ }
final里面的成员变量可以被定义成final或非final形式。

4、成员内部类:在一个类中使用内部类,可以在内部类中直接存取其所在类的私有成员变量。
内部类向上转型为接口,
使用this关键字获取内部类与外部类的引用
5、局部内部类:
内部类不仅可以在类中进行定义,也可以在类的局部位置定义,如在类的方法或任意的作用域中均可以定义内部类。
6、匿名内部类:
return new A(){ 内部类体 } A是类名
7、静态内部类
8、内部类的继承:

接口、继承与多态

1、类的继承:
①基于某个父类的扩展,制定出一个新的子类,子类可以继承父类的属性和方法。也可以增加父类不具备的属性和方法。
②继承还可以重写父类成员的方法:重写就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类型,重写时不能降低方法的修饰权限范围,只能提高。子类重写父类的方法时可以修改方法的返回值
③也可以在子类中是使用super关键字来调用父类的成员方法,但是子类没有权限调用父类的中被修饰为private的方法。
④当实例化子类对象的时候,父类对象也相应会实例化,(在实例化子类对象时,java编译器会在子类的构造方法中自动调用父类的无参构造方法)
2、重载发生在父类与子类之间,名称好人参数个数不同,与返回值无关。
①为什么与返回值无关:因为java里允许调用一个有返回值的方法的时候不必将返回值赋给变量,这样JVM就不知道你调用的是有返回值的还是没返回值的。
② 方法重载跟返回值类型和修饰符无关 Java的重载 是发生在本类中的,重载的条件是在本类中有多个方法名相同,但参数列表不同(可能是,参数个数不同,参数类型,顺序不同),跟返回值无关。 我们可以举个例子,假如我们在同一个类中,写了两个方法名相同并且参数列表也相同,只是返回值不同,public Stringshow(int number) public int show(int number) 而我们调用这个方法给它赋值的时候java虚拟机并不知道你要赋给的是String型的方法还是int型的方法,所以重载跟返回值无关。

3、当实例化子类对象的时候,父类对象也相对会被实例化,
4、Object是所有类的父类。Object类中的getClass()、notify()、notifyAll()、wait()等方法都不能被重写,以为这些方法被定义为final类型。
①getClass()方法,getClass().getname();
②toString()方法
③equals()方法
5、向上转型:小转大:向下转型:大转小(强转);
6、①instanceof:半段对象类型,就是判断父类对象是否为子类的实例。
② 语法格式:myobject(某个类的引用对象) instanceof ExampleClass(某个类)
③使用instanceof操作符表达式的返回值为布尔值。如果返回值是true,说明myobject对象为ExampleClass的实例对象,如果返回值为false,说明myobject对象不是ExampleClass的实例对象。
7、多态:指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。
实现条件: Java实现多态有三个必要条件:继承、重写、向上转型。

继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法.

8、抽象类:
①抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun();
② 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:
  1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
  2)抽象类不能用来创建对象;
  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
③使用abstract关键字定义的类为抽象类,而使用这个关键字定义的方法叫做抽象方法,抽象方法没有方法体,这和个方法体本身就没有意义,除非它被重写,而承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承之外没有任何的意义。
抽象方法被继承后需要实现其中的所有方法,也就是保证相同的方法名称,参数列表和相同的返回值类型创建出的非抽象方法,也可以是抽象方法。
1 .接口只能包含抽象方法,抽象类可以包含普通方法。
2. 接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。
3 .接口不包含构造方法,抽象类里可以包含构造方法。
4.抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,备继承类扩充
5.接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。
6. 如果许多类实现了某个接口,那么每个都要用代码实现那些方法
7.如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现。
所以,抽象类是为了简化接口的实现,他不仅提供了公共方法的实现,让你可以快速开发,又允许你的类完全可以自己实现所有的方法,不会出现紧耦合的问题。
9、接口:接口是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法都没有方法体。接口使用interface关键字进行定义。
①在接口中定义的方法必须被定义为public或abstract形式,其他修饰权限不被java编译器认可。
②在接口中定义的任何字段都自动是static和final的。
③java是不予许多继承的,但是使用接口就可以实现多重继承了,因为一个类可以同时实现多个接口,多重继承的语法为:class 类名 implements 接口1,接口2,·····接口n
④再定义一个接口时使该接口继承另外一个接口:
interface intf1{
}
interface intf2 extend intf1{
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值