本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题。首先来看一个例子/*** Created by lili on 15/10/19.*/class Person{static {System.out.println("执行Person静态代码块");}{System.out.println("执行Person构造代码块");}public Person(){System.out.println("执行Person构造方法");} }class Student extends Person{static {System.out.println("执行Student静态代码块");}{System.out.println("执行Studen...
一、继承 1.继承的概念 继承可以解决代码复用,让我们的编程更加靠近人类思维。当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类。语法如下: class 子类 extends 父类这样,子类就会自动拥有父类定义的某些属性和方法。另外,并不是父类的所有属性、...
(一)list和数组①List默认排序代码:public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("阿a里 ");list.add("不b安定 ");list.add("嘻x嘻 ");list.add("一y一 ");list.add("传c递 ");list.add("东d西 ");list.add("耳e朵 ");list.add("分f数 ");for (int i=0;i<list.size();i++){System.out.print(list.get(i));}//降序【以现有list的顺序----从后往前输出 】System.out.println(" 降序"...
子类在继承父类后,创建子类对象会首先调用父类的构造函数,先运行父类的构造函数,然后再运行子类的构造函数,例如以下所看到的:class Father{public Father(){System.out.println("I am father");} } public class Child extends Father{public Child(){ System.out.println("I am child");}public static void main(String[] args) {Father f=new Father();Child c=new Child();} }当父类有带參数的构造函数时,子类默认是调用...
线程是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写Thread 类的run 方法。另一种方法是声明实现 Runnable 接口的类。该类然后实现run 方法。创建线程方式一:继承Thread类一、创建线程的步骤:1.定义一个类继承Thread类2.覆盖Thread中的run()方法3.直接创建Thread类子类的对象4.调用start方法开启线程,并调用线程的任务run方法...
package com.lianxi;publicclass Instrument {publicvoid play(){System.out.println("弹奏乐器");}}package com.lianxi;publicclass Wind extends Instrument {publicvoid play(){System.out.println("弹奏Wind");}publicvoid play2(){System.out.println("调用Wind的play2");}}package com.lianxi;publicclass Brass extends Instrument {publicvoid play(){System.out.println("弹奏brass");}publicvoid play2(){System.out.pri...
直接这么修饰成员变量就会报错。这里必须要手动赋值,因为string name这里的默认是值null。一但默认值以后就不能后续再赋值了。所以这里强制你必须要手动赋值。 给name赋值后。后面所有的代码 尝试给name赋值的地方都报错了。 通过构造进行赋值。 构造有两个一个有参的一个无参的。默认的构造没有对name进行赋值。必须保证所有的重载形式的构造方法,都最终会对final的成员变量进行赋值。 通过构造赋值后,后面的setter就不能再给n...
组合和继承,都能实现对类的扩展。区别如下表所示组合继承has-a关系is-a关系运行期决定编译期决定不破坏封装,整体和局部松耦合破坏封装,子类依赖父类支持扩展,随意增加组合类只能继承一个父类,必须包含所有方法,增加系统复杂性动态选择组合类方法复用父类方法下面通过一个例子说明,子类继承必须包含所有父类方法,增加了出错率,修改父类方法会引起所有子类功能变化。/*** 呼叫基类* * @author peter_wang* @create-time 201...
Java中线程的创建有两种方式:1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中2. 通过实现Runnable接口,实例化Thread类一、通过继承Thread类实现多线程class MyThread extends Thread{String name = null;int ticket = 0;public MyThread(String name){this.name = name;}public synchronized void run(){for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName()+this.nam...
看到一片个人认为的好博客,http://www.cnblogs.com/dolphin0520/p/3803432.html ;这一节看的比较慢,加油,就是干;分类不好意思分到Java中,嘿嘿还是找个地方藏一藏;MMP,有点在大海游泳的感觉,虽然我不会游泳;怎么没有看到表情包;System.out.print("我想上岸");原文:http://www.cnblogs.com/jinmoon/p/7738961.html
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 继承(inheritance)是面向对象的重要概念。继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式。我们在组合(composition)中看到,组合是重复调用对象的功能接口。我们将看到,继承可以重复利用已有的类的定义。 类的继承我们之前定义类的时候,都是从头开始,详细的定义该类的每一个成员。比如下面的Human类:cl...
java学习 接口与继承8 final内容新的一种修饰符基本知识修饰类,使得该类无法被继承public final class.. 修饰变量,属性 使得该变量只能被赋值一次(同样是在前面加修饰符)修饰final,使得引用只能指向一次同时对象的属性依旧可以修改修饰常量,publicstaticfinalint常量名 = 6;(不会改变直接访问)注意事项我也不知道...原文:https://www.cnblogs.com/tigo/p/14308039.html
publicclass Main {{ //构造块(在构造对象时调用,先于构造方法执行)System.out.println("我是构造块!");}static{ //静态块(在类加载时执行,且只执行一次【在构造块前执行】eg:数据库连接)System.out.println("我是静态块!");}public Main(){System.out.println("我是构造方法!");}publicstaticvoid main(String[] args) {Main m1 = new Main();Main m2 = new Main();} } /*** 单例设计模式:保证一个类仅有一个实例,并...
第七章:Java继承一、继承的概念 1.一个父类派生出一个子类的机制称为继承。2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类。 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可。 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法。 5.两个或多个类的成员中存在一部分相同的情况,通过继承机...
封装定义:属性私有private;get/set目的提高程序的安全性,保护数据隐藏代码的实现细节统一接口提高系统的可维护性代码public class Student {//名字private String name;//学号private int id;//性别private char sex;//年龄private int age;//要提供一些可以操作这些属性的方法//get 获得这个数据public String getName(){return name;}//set 给这个属性赋值public void setName(String name){this.name = name;}//Alt + Inser...