A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wjiuchaol1 中级黑马   /  2015-12-4 22:54  /  668 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码快:在java中, 使用{}括起来的代码就被称谓代码快


代码快分类:
1:局部代码快:定义在方法中.作用是让变量尽可能早的从内存中施放 提高效率
2:构造代码快:定义在成员位置. 类中方法外  作用里边存储的是所有构造方法的共性内容
因为他是优先于构造方法执行的.从而提高代码的复用性和编写效率
3 静态代码快:被static 修饰的代码块. 一般是用来加载驱动的. 因为他是随这类的加载而执行.
特点. 静态代码快值执行一次 (类文件值加载一次的情况下)
4同步代码快: 被syncharonized修饰的代码快. (多线程的时候讲)


什么是继承:extends
让类与类之间产生关系 子父类关系


继承的好处和坏处

好处: 提高代码的复用性. 提高代码的维护性. 让类与类之类产生了关系. 是多态的前提.

多态:让类与类产生的关系  方法重写

弊端!! :类的偶合性增强了.  
开发的原则: 高内聚 底耦合.
耦合:;类与类的关系
内聚:就是类自己完成某事情的能力


java只支持单继承. 不支持多继承.多继承是有安全隐患的.(一个儿子只能有一个亲爹) 但可以多层继承

总结: 看顶层用底层.

继承的注意事项:

1: 子类智能继承弗雷所有非私有的成员.(成员方法和成员变量)
2:子类不能结成弗雷的构造方法.但是可以通过super 关键字
3:不要为了部分功能而去继承.
项目经理. 姓名. 工号 工资 奖金.
程序员. 姓名 工号 工资.

什么hi后使用继承. 继承其实提现的是一种提现关系."is a"  满足 is a 关系的时候就可以考虑使用继承

继承中的成员特点:
成员变量:
够脏方法:子类所有的够脏方法默认都去访问了弗雷的午餐够脏 为什么?
用于子类队形访问弗雷数据前,对弗雷数据进行初始化.
值要子类对象一创建. 就可以直接使用弗雷中的所有,飞私有成员
所有的类都直接或间接继承自object类 是所有类的弗雷. object类中只有一个午餐够脏
成员方法:
方法重写:  子类和弗雷一模一样的方法.返回值也必须完全一样 或者有子夫类关系.
方法重写的英勇:  当子类需要弗雷的功能.而功能主体子类
有自己特有的内容时 可以重写弗雷中的方法,这样既沿袭了父亲的功能 有定义了子类的特有内容
大白话. 想使用父亲的,而且还想用自己的就考虑

注意事项:
1:弗雷的私有方法,不能被子类不能重写
2:子类重写的时候 方法的访问权限 不能低于父类的访问权限:从小到大. private --> moren -->protected public.
3:弗雷的静态方法能不能被 子类的飞静态方法重写
静态只能覆盖静态 严格来讲 算不上重写

面试题:方法重载和方法重写的区别.
override和overrload有什么区别.
方法重写:子类中出现了和父类中方法声明一模一样的方法 与返回类型有关 返回值一直 或者是子类的
方法重载:本类中出现的方法名一样 参数列表不同的方法.与返回值类型无关

子类对象调用方法的时候:
先找子类本身, 在找父类,


使用变量遵循就近原则.  局部位置有就使用.没有就去本类成员位置找,有就使用 没有就去父类的
成员位置找. 有就使用. 没有就报错

this和super的区别. :
this:当前对象的引用.谁调用我 我就代表谁
sper:代表当前对象弗雷的引用.

区别是:

1:调用成员变量: this.成员变量: 既可以调用 也可以调用弗雷调用 前提是本类没有
super 成员变量: 值能调用弗雷的成员变量
2:调用够脏方法:
this(参数) : 调用本类的构造
super(参数):智能调用父位的构造
3,调用成员方法:
super 成员方法: 值能调用弗雷的成员方法
this.成员变方法: 既可以调用 也可以调用弗雷调用 前提是本类没有


如果弗雷没有午餐够脏怎么办:

第一种. 通过this(参数) 的形式调用本类的其他构造

第二种 super(参数) 的形式调用弗雷的代餐够脏

注意事项: super()语句和this() 语句必须放在够脏方法的第一行

问题: super 关键字和this 关键字.在同一个够脏方法中 能不能共存.

  可以共存.  

class Demo {
        public static void main(String[] args) {
                Cat c = new Cat("屎黄色",1);

                c.eat();

                c.catchMouse();
                        System.out.println(c.getColor() + "..." + c.getLeg());

                Dog d = new Dog();
                d.setColor("粑粑色");
                d.setLeg(9);
                d.eat();
                d.lookHome();
                        System.out.println(d.getColor() + "..." + d.getLeg());
        }
}

class Animal {
        private String color;
        private int leg;

        public Animal() {}

        public Animal(String color, int leg) {
                this.color = color;
                this.leg = leg;
        }

        public void setColor(String color) {
                this.color = color;
        }

        public String getColor() {
                return color;
        }

        public void setLeg(int leg) {
                this.leg = leg;
        }

        public int getLeg() {
                return leg;
        }

        public void eat() {
                System.out.println("吃饭");
        }
}

class Cat extends Animal {
        public Cat() {}

        public Cat(String color,int leg) {
                super(color,leg);
        }

        public void catchMouse() {
                System.out.println("抓胡志明");
        }
}

class Dog extends Animal {
        public Dog() {}

        public Dog(String color,int leg) {
                super(color,leg);
        }

        public void lookHome() {
                System.out.println("看胡志明");
        }
}



class Demo {
        public static void main(String[] args) {
                Cat c = new Cat("胡志明",17);

                c.eat();

                c.catchMouse();
                        System.out.println(c.getColor() + "..." + c.getLeg());

                Dog d = new Dog();
                d.setColor("自己");
                d.setLeg(9);
                d.eat();
                d.lookHome();
                        System.out.println(d.getColor() + "..." + d.getLeg());
        }
}

class Animal {
        private String color;
        private int leg;

        public Animal() {}

        public Animal(String color, int leg) {
                this.color = color;
                this.leg = leg;
        }

        public void setColor(String color) {
                this.color = color;
        }

        public String getColor() {
                return color;
        }

        public void setLeg(int leg) {
                this.leg = leg;
        }

        public int getLeg() {
                return leg;
        }

        public void eat() {
                System.out.println("寻找吃的);
        }
}

class Cat extends Animal {
        public Cat() {}

        public Cat(String color,int leg) {
                super(color,leg);
        }

        public void catchMouse() {
                System.out.println("抓主老鼠");
        }
}

class Dog extends Animal {
        public Dog() {}

        public Dog(String color,int leg) {
                super(color,leg);
        }

        public void lookHome() {
                System.out.println("看胡志明");
        }
}


final 关键字:

概述:final 是最终的意思. 也是关键字 可以修饰类. 变量. 方法.

final 修饰特点.
修饰类 类不能被继承 但是可以继承其他类.
修饰变量, 变量变成常量 只能被赋值一次  一般和public static final  他们三者有屋顺序
没有顺序关系 但是一般 public static final.
修饰方法 方法不能被重写

基本类型,是值不能被改变
引用类型,是地址值不能被改变. 对象中的属性可以改变.


修饰变量的初始化时机:
        显示初始化
        在对象构造完毕前即可.

接口与接口之间的继承:

评分

参与人数 1黑马币 +4 收起 理由
张研老师 + 4 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马