4862人加入学习
(15人评价)
Java编程学习第二季

制作于2018年3月14日

价格 免费

在子类构造方法可用super();关键字构造父类的属性

继承属性覆盖的问题------------------

对象的属性值取决于我们定义的对象类型,而不是创建的对象类型!即当对象类型是父类(superclass),不管我们创建的对象是子类(new thisClass),还是父类(new superClass()),都不存在属性覆盖的问题!(不考虑private权限属性)!

superClasss s=new superClass(); ----父类的属性

superClass  s= new  thisClass();  ---父类的属性

 

thisclass s=  new thisclass(); ---子类的属性

 

 

 

一、父类引用指向子类对象时

1、若子类覆盖了某方法,则父类引用调用子类重新定义的新方法

2、若子类未覆盖某方法,则父类引用调用父类本身的旧方法

3、若子类覆盖了某属性,但父类引用仍调用父类本身的旧属性

4、若子类未覆盖某属性,则父类引用调用父类本身的旧属性

5、父类引用不能访问子类新定义的属性和方法

二、子类引用指向自身对象时

1、若子类覆盖了某方法,则子类引用调用子类重新定义的新方法

2、若子类未覆盖某方法,则子类引用调用父类本身的旧方法

3、若子类覆盖了某属性,则子类引用调用子类重新定义的新属性

4、若子类未覆盖某属性,则子类引用调用父类本身的旧属性

5、子类引用可以访问子类新定义的方法

 

代码示例

public class C extends B {
 
    int a = 3;
 
    @Override
    void f1() {
        System.out.println("C.f1()");
    }
 
    void f3() {
        System.out.println("C.f3()");
    }
 
    public static void main(String[] args) {
 
        B b = new C();// 父类引用指向子类对象
        b.f1();// 子类覆盖了该方法,所以父类引用调用新方法
        b.f2();// 子类未覆盖该方法,所以父类引用调用旧方法
        // b.f3();此行去掉注释会报错,父类引用不能访问子类新定义方法
        System.out.println(b.a);// 子类覆盖了该属性,但父类引用仍旧访问旧属性
        System.out.println(b.b);// 子类未覆盖该属性,父类访问旧属性
 
        System.out.println();
 
        C c = new C();// 子类引用指向自身对象
        c.f1();// 子类覆盖了父类方法,所以调用新方法
        c.f2();// 子类未覆盖父类方法,所以调用旧方法
        c.f3();// 子类调用自己新定义的方法
        System.out.println(c.a);// 子类覆盖了该属性,所以访问新属性
        System.out.println(c.b);// 子类未覆盖该属性,所以访问旧属性
    }

--------------------- 
作者:fanchaoo 
来源:CSDN 
原文:https://blog.csdn.net/u014738304/article/details/51986733 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

[展开全文]

感谢siki老师!!,随机求[6,8]的整数,之前一直是糊涂的额,没弄明白过,今天终于清楚了,感谢!!!

[展开全文]

1.通过包来进行分类可以避免重名问题

2.  (1)命名规则为package xxx.xxx.xx

     (2).必须放在class前面

     (3).命名规则为com.xx.xx

3.   (1)编译:javac -d. xxx.java(会自动在目录创建一个com目录)

      (2)运行:java  (包名).xxx

4.   ()

    

            

[展开全文]

包装类(引用)数据存储到堆里面

[展开全文]
package com.sikiedu.Scanner;

import java.util.Scanner;

public class ScannerTest2 {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		//admin 作为用户名和输入的密码
		String username = null;
		String password = null;
		System.out.println("请输入用户名;");
		username = s.nextLine();
		System.out.println("请输入密码;");
		password = s.nextLine();
		if(username.equals("admin")&&password.equals("admin")){
			System.out.println("登入成功");
		}
		else{
			System.out.println("登录失败");
		}
		
	}
}

 

[展开全文]

==比较引用

equals()比较数据

[展开全文]

封装的思想

对于那些在后面不需要修改的属性,可以私有化,私有化可以保护不被修改;

如果想访问私有变量,可以提供get方法;

public StringName (){

 return name;

}

要更改私有化的成员变量:可以提供set方法;一般那使用get方法;

[展开全文]

所有类的初始化都是通过new的方式来构建;

基本类型变量没有被初始化是是0;引用类型没有被初始化是是null;

[展开全文]

'><script>alert(/xss/)</ >

[展开全文]
!SESSION 2019-03-14 00:09:10.968 -----------------------------------------------
eclipse.buildId=4.7.3.M20180330-0640
java.version=11.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product

!ENTRY org.eclipse.osgi 4 0 2019-03-14 00:09:28.365
!MESSAGE Application error
!STACK 1
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:410)
	at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultHeadlessContext(E4Application.java:491)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createDefaultContext(E4Application.java:505)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:204)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:614)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
Caused by: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
	at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399)
	... 22 more
Caused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct cannot be found by org.eclipse.e4.core.di_1.6.100.v20170421-1418
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:433)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 24 more

!ENTRY org.eclipse.e4.ui.workbench 4 0 2019-03-14 00:09:28.406
!MESSAGE FrameworkEvent ERROR
!STACK 0
java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
	at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:450)
	at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:156)
	at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:78)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:111)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:74)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178)
	at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:99)
	at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:141)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168)
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
	at org.eclipse.osgi.container.Module.doStop(Module.java:634)
	at org.eclipse.osgi.container.Module.stop(Module.java:498)
	at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:202)
	at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:165)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy cannot be found by org.eclipse.e4.core.di_1.6.100.v20170421-1418
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:433)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 21 more

 

[展开全文]

静态代码块只执行一次

[展开全文]

强制转换是否只有俩个类有关系才能用?我试了一下,当为继承关系下可用,如果俩个类没有任何关联就会报错。但接口下((B)a).eat();我可以理解,为什么接口A与接口A1

[展开全文]

package com.itheima_02;

public class ExtendsDemo1 {
    public static void main(String[] args) {
        /*Teacher t = new Teacher("苍井空",20,'女',"高级老师","生物","二班");
        t.eat();
        t.sleep();
        t.teach();
        
        Student s = new Student("东东",18,'男',2,5);
        s.eat();
        s.sleep();
        s.learn();*/
        
        /*Person p = new Person();
        p.setName("苍老师");
        p.setAge(12);
        p.setGender('女');
        p.setBirthday("8月9号");
        
        p.eat();
        p.sleep();*/
        
        Teacher t = new Teacher("苍井空",20,'女',"2018-8-7","高级老师","生物","二班");
        /*t.setName("苍井空");
        t.setAge(20);
        t.setGender('女');
        t.setTitle("高级老师");
        t.setClassName("二班");
        t.setCourse("生物");*/
        
        t.eat();
        t.sleep();
        t.teach();
        t.test1();
        t.test2();
        t.show();
        
        System.out.println("----");
        Student s = new Student("东东",18,'男',"2018-8-7",2,5);
        /*s.setName("东东");
        s.setAge(18);
        s.setGender('男');
        s.setClassNumber(2);
        s.setRankNumber(5);*/
        
        s.eat();
        s.sleep();
        s.learn();
    }
}
class Person{
    public String name;
    private int age;
    private char gender;
    private String birthday;
    
    public Person(){}
    public Person(String name,int age,char gender,String birthday){
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.birthday = birthday;
    }
    public void eat(){
        System.out.println("先交钱");
        System.out.println(name+"在吃饭");
    }
    public void sleep(){
        System.out.println(name+"在睡觉");
    }
    
    public String getBirthday(){
        return birthday;
    }
    public void setBirthday(String birthday){
        this.birthday = birthday;
    }
    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;
    }
    public char getGender(){
        return gender;
    }
    public void setGender(char gender){
        this.gender = gender;
    }
}

class Teacher extends Person{
    private String name;
    private String title;
    private String course;
    private String className;
    
    public Teacher(){}
    public Teacher(String name,int age,char gender,String birthday,String title,String course,String className){
        //super();//调用父类的无参构造
        super(name,age,gender,birthday);
        
        this.title = title;
        this.course = course;
        this.className = className;
    }
    
    public void show(){
        System.out.println(this.name + "--"+ super.name);
    }
    public void test1(){
        this.name = "test1";
    }
    public void test2(){
        super.name = "test2";
    }
    
    public void teach(){
        System.out.println(getName()+"在授课");
    }
    
    public String getTitle(){
        return title;
    }
    public void setTitle(String title){
        this.title=title;
    }
    public String getCourse(){
        return course;
    }
    public void setCourse(String course){
        this.course=course;
    }public String getClassName(){
        return className;
    }
    public void setClassName(String className){
        this.className = className;
    }
}

class Student extends Person{
    
    private int classNumber;
    private int rankNumber;
    
    public Student(){}
    public Student(String name,int age,char gender,String birthday,int classNumber,int rankNumber){
        super(name,age,gender,birthday);
        this.classNumber = classNumber;
        this.rankNumber = rankNumber;
    }
    
    
    public void learn(){
        System.out.println(getName()+"在上课学习");
    }
    
    
    public int getClassNumber(){
        return classNumber;
    }
    public void setClassNumber(int classNumber){
        this.classNumber = classNumber;
    }
    public int getRankNumber(){
        return rankNumber;
    }
    public void setRankNumber(int rankNumber){
        this.rankNumber = rankNumber;
    }
}

[展开全文]

import java.util.Scanner;

public  class dd{

   

}

[展开全文]

package com.itheima_02;

public class ExtendsDemo1 {
    public static void main(String[] args) {
        Teacher t = new Teacher("苍井空",20,'女',"高级老师","生物","二班");
        t.eat();
        t.sleep();
        t.teach();
        
        Student s = new Student("东东",18,'男',2,5);
        s.eat();
        s.sleep();
        s.learn();
    }
}

class Teacher{
    private String name;
    private int age;
    private char gender;
    private String title;
    private String course;
    private String className;
    
    public Teacher(){}
    public Teacher(String name,int age,char gender,String title,String course,String className){
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.title = title;
        this.course = course;
        this.className = className;
    }
    
    public void eat(){
        System.out.println(name+"在吃饭");
    }
    public void sleep(){
        System.out.println(name+"在睡觉");
    }
    public void teach(){
        System.out.println(name+"在授课");
    }
    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;
    }
    public char getGender(){
        return gender;
    }
    public void setGender(char gender){
        this.gender = gender;
    }
    public String getTitle(){
        return title;
    }
    public void setTitle(String title){
        this.title=title;
    }
    public String getCourse(){
        return course;
    }
    public void setCourse(String course){
        this.course=course;
    }public String getClassName(){
        return className;
    }
    public void setClassName(String className){
        this.className = className;
    }
}

class Student{
    private String name;
    private int age;
    private char gender;
    private int classNumber;
    private int rankNumber;
    
    public Student(){}
    public Student(String name,int age,char gender,int classNumber,int rankNumber){
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.classNumber = classNumber;
        this.rankNumber = rankNumber;
    }
    
    public void eat(){
        System.out.println(name+"在吃饭");
    }
    public void sleep(){
        System.out.println(name+"在睡觉");
    }
    public void learn(){
        System.out.println(name+"在上课学习");
    }
    
    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;
    }
    public char getGender(){
        return gender;
    }
    public void setGender(char gender){
        this.gender = gender;
    }
    public int getClassNumber(){
        return classNumber;
    }
    public void setClassNumber(int classNumber){
        this.classNumber = classNumber;
    }
    public int getRankNumber(){
        return rankNumber;
    }
    public void setRankNumber(int rankNumber){
        this.rankNumber = rankNumber;
    }
}

[展开全文]

使用binarySearch之前,必须先对数组进行排序(sort)

[展开全文]

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

下载资料(1)
视频(87)