杰神之Java代码块和方法的继承(方法重载和方法重写)
2018-01-10 21:37
357 查看
Java代码块和方法的继承(方法重载和方法重写)
代码块
代码块分类:* 1.局部代码块(限制变量的作用域)
书写位置:方法中
* 2.构造代码块(在开发中很少使用)
书写位置:在类中方法外
调用时机:如果你有构造代码块,系统会帮你调用
帮你在创建对象之前调用 每次创建对象都会调用
* 3.静态代码块(一定是被static修饰的)
静态代码块依赖类 随着类的加载而加载
注意:加载一次(不管你创建多少对象,系统只调用一次)
应用场景:加载驱动(U盘装载驱动程序 JDBC数据库驱动)
* 4.同步代码块(多线程)
public class Demo01 { public static void main(String[] args) { /*{ System.out.println("我是局部代码块"); } */ Person person = new Person(); person.setAge(15); person.setName("james"); person.sayHi(); Person person1 = new Person("Tom", 12); person1.sayHi(); } } // 人名 年龄 有参无参 构造 sayHi class Person{ private String name; private int age; //构造代码块 { // 每个对象都会调用同一样的方法 可以使用代码块 System.out.println("哈哈"); } static{ System.out.println("我是静态代码块"); } // 有参无参构造方法 public Person() { System.out.println("我是无参的构造方法"); } public Person(String name, int age) { this.name = name; this.age = age; System.out.println("我是有参的构造方法"); } // get/set方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } // sayHI方法 public void sayHi() { System.out.println(name + " " +age); } public void sleep() { System.out.println("睡觉 就是爽"); } }
继承
特点:1.减少代码量
2.让类与类之间产生关联(父子)
继承使用的关键字:extends
注意:
1.继承时可以把多个类中相同的功能或方法抽取出来,
重新构造一个类出来 把这些类 建立继承关系
2.建立继承关系的同时 一定要符合逻辑(切记不要为了继承而继承)
3.java只允许单继承(多继承可以使用接口间接实现)
4.java 中允许多层继承(爷爷 父亲 儿子 孙子 …)
5.java中最顶层的父类(最基础) Object类
6.如果这个类没有写继承哪个父类 默认继承Object类
7.如果使用共有方法或者类 可以当前继承中创建最顶端的类来使用
8.如果要使用特殊的方法 就创建当前继承中最末端的类来使用
9.构造方法不能被继承,为了保障继承的完整性,在你创建子类对象的
时候 ,如果不调用父类的构造方法,系统会帮你调用父类无参构造方法
super 关键字
super代表是父类的对象super 调用方法
* 调用对象 super点对象
* 调方法 super点方法()
public class Demo05 { public static void main(String[] args) { TestB testB = new TestB(); testB.fun(); } } class TestA{ int num1 = 10; int num2 = 20; //无参构造方法注释 // public TestA() { // } public TestA(int num1, int num2) { super(); this.num1 = num1; this.num2 = num2; } public void sayHi() { System.out.println("jaja"); } } //继承TestA类 class TestB extends TestA{ int num1 = 30; // 子类的构造方法中 如果你什么都不写 会默认调父类无参构造 //如果父类 没有无参的构造方法 就证明 父类当中一定有有参方法 //无论有参 还是无参 子类的构造方法中必须调用一个 //如果没有调用无参的, 必须要手动调用一个有参构造方法 public TestB(int num1, int num2) { super(num1, num2); } public void fun() { //使用this 时 会现在本类中寻找该属性 没找到 就去父类中找 System.out.println(this.num1 + " " + this.num2); System.out.println(super.num1); // this.sayHi(); // super 调用方法 super.方法(); super();调用父类构造方法 this(); 调用本类构造方法 // super.sayHi(); } }
方法重写和方法重载的区别
方法重写注意:方法声明完全一致的时候,叫方法的重写
方法的重写建立在类与类之间有继承关系
方法重载
实现相同的功能,但是函数的内部实现不同。函数的重载是函数名字相同,并且只跟参数有关(参数的类型 参数的顺序 参数的个数有关),跟参数的返回值和参数名无关。
* Override(重写)和Overload(重载)的区别 * 1.重写前提:需要继承关系 * 重载前提:同一个类里 * 2.重写需要方法声明完全一致 * 重载只跟参数有关
相关文章推荐
- java面向对象的继承以及方法重写和重载
- JAVA中继承时方法的重载(overload)与重写/覆写(override)
- java笔记(三)[java中的继承&java中的方法重载,重写,重构&java中的向上转型和乡下转型&java中的抽象类和接口&java中的接口向上转型]
- JAVA基础--重载与重写,接口与抽象类,构造方法的作用,代码块的分类
- 08-java代码块,继承,方法重写,final关键字
- 黑马程序员——Java基础---面向对象代码块和继承和this和super和重写和重载和final
- Java继承中方法的覆盖(重写)和重载
- java代码-------继承的方法----重写还是重载
- 类、对象、继承、封装、多态、方法的重载和重写、Java的访问修饰符与其它关键字
- JavaDay06--Homework(方法重载和重写的区别,构造方法,继承类)
- JAVA【类】析构器、重载与继承、方法的重写、自动转型、多态、方法与类的分类、接口继承
- java重载方法重写、继承封装
- JAVA 方法重载,方法重写,继承
- 简单的java实验,涉及到 类继承以及接口问题,方法体的重写(区别于重载)
- JAVA基础再回首(六)——父与子的继承、super关键字、方法重写、方法重载
- Java 匿名函数、构造方法、构造代码块、方法重载与方法重写
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- 关于ActionScript 3.0 中方法重写和继承的发现(运行时多态,原理同Java)
- Java中的类成员访问控制符和继承重写父类的方法时的类成员访问控制符的相关问题