码迷,mamicode.com
首页 > 编程语言 > 详细

Java学习(六)

时间:2016-04-12 22:36:58      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

面向对象

结构化编程和面向对象编程

  • 在Java中,围绕要解决问题的对象来设计,我们通过类来描述对的属性和行为。把其中的一切都当成对象来描述
  • 类与对象是相辅相成的,类是对象,对象是类的实例.
  • 对象的每个属性被表示为类中的一个成员变量,对象的每个行为成为类中的一个方法

类是拥有共同属性的对象的集合。创建一个新的对象要用到关键字New,New+类名表示实例化一个新的对象,例如:

public class Name(){}
建立一个其他的类
public class Other(){
Name name=new Name();//这就表示实例化一个新的对象
}

实例化后,它拥有类的所有属性和方法。

构造函数

在每次new一个对象的时候我们都会通过一个模板来创建,而这个模板就是构造函数。java中默认有构造函数,只是未写出,对象的实例化都是通过构造函数。
如果没有写构造函数,系统会默认创建一个无参的构造函数,如果写了,系统就不再创建,对象的实例化就会通过你的构造函数来进行。

构造函数与其他方法的区别

  • 构造函数的名称必须和类的名字相同
  • 构造函数没有返回值,也不能声明返回值

    public class Test{
    public Test(){
    super();}//无参的构造函数
    public Test(int a){
    super();}//有参数的构造函数 
    }
    

    添加多个构造函数的时候,需要应用方法的重载,每个构造函数必须有一个唯一的形参列表。 在构造函数中有super()这个方法,这代表可以调用父类的方法super.方法名。在所有对象中,他们的根就是object,所以默认的super就是代表的object

this关键字

在多个构造函数中,可以用this关键字来调用其他构造函数,该this语句必须在该构造函数的第一行,否则会发生错误。

    public class Test{
    int a=0;
    public Test(){
        this(b);}//a是实参,可以是任意int类型的
    public Test(int a){
        this.a=a}}//把接收到的a的值赋给开始定义的a

继承(extends)

  • 在面向对象编程中,通过拓展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式成为继承
  • 继承中,已有的类称为父类。新的类称为子类。父类可以称为基类、超类

    public class Student{
        public void say(){//声明实现一个方法
    System.out.print("被继承了");}}
    //新建一个类去继承Student
    public class Test extends Student{
        public void test(){
        this.say();}通过this或是super关键字来调用父类的方法
        @Override//重写父类的方法
        public void say(){}
        }
    

在面向对象编程中,当两个或是多个类不相同,但是拥有共同的特征的时候,我们将共同的元素拿出来放到一个父类中。这样使用继承不仅可以重用已有的代码避免代码重复,还可以创建一个易于维护和修改代码的程序
继承中可以使用“is a”关系来判断父类和子类的继承关系是否正确。当使用继承时,我们必须能够说子类is a (是一个)父类,如果是对的,那么继承关系就是正确的
Java中子类只能继承一个父类,但是父类也能拥有父类

方法重写

  • 子类的返回值类型、方法名和形式参数列表,必须和父类中的是相同的。如果子类中的方法与父类中的方法同名,但是子类中的方法改变了形式参数列表,这是方法重载而不是重写了
  • 访问修饰符必须不小于父类中的访问修饰符

final关键字

  • final类 一个类可以声明为最终类的。最终类不能被有子类
  • final方法 一个方法可以声明为最终的,最终方法不能被重写

    public final class Student{}
    

final方法 当子类重写父类的一个方法时,父类中被重写的方法实质上是被隐藏了。在子类中,要调用父类中的方法,唯一的方法是显示的调用。如果不想子类重写,可以将该方法声明为最终的方法。最终方法不能被子类重写

访问修饰符

  • public(公开访问级别):用public关键字修饰的成员对外公开,即公开成员可以被任何其他对象访问
  • protect(受保护访问级别):用protect关键字修饰,受保护成员可以被同一包中的类所访问,还可以被类的子类访问,不管子类在哪个包中
  • 没有访问修饰符(默认访问级别):默认的访问级别的成员可以被同一包中的其他类所访问
  • private(私有访问级别):使用private关键字修饰。他是访问修饰符中级别最低的。私有成员只有类本身可以访问,不对外公开

ps:受保护和默认访问相似的,因为二者都授予可以访问同一包中的其他类。受保护访问类型实际上比默认访问的限制更小,因为受保护访问也授予访问在包外的子类

            本类   同包     子类      外包
public       √      √       √       √
private      √      ×       ×       ×
protect      √      √       √       ×
默认:       √      √       √       ×     
                            ↓↓
                  默认的子类出了包就不能访问

封装

封装是使类中的成员变量都是private,并提供public方法访问这些成员变量的技术。如果一个成员变量被声明为private,那么它就不能被其他类访问,从而隐藏了类中的成员变量.因此,封装也被称为数据隐藏

Java学习(六)

标签:

原文地址:http://www.cnblogs.com/yeruheqi/p/5384670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!