car
мы адрес этого объекта не прописывали? public class Human {
String name;
Car3 car;
BankAccount1 bA;
void info () {
System.out.println(car.color);
}
}
class Car3 {
Car3(String c, String e) {
color=c;
engine=e;
}
String color;
String engine;
}
Sand, в стране майнии)
а именно почему объект работает как должно при том, что в переменной car мы адрес этого объекта не прописывали?
так мы и в инициализации Human объект Car3 не присваиваем переменной car...
public class Human {
String name;
Car3 car;
BankAccount1 bA;
void info () {
System.out.println(car.color);
}
}
class HumanTest{
public static void main(String[] args){
}
}
class Car3 {
Car3(String c, String e) {
color=c;
engine=e;
}
String color;
String engine;
}
class BankAccount1 {
BankAccount1 (int id2, int balance2) {
id=id2;
balance=balance2;
}
int id;
double balance;
}
class HumanTest{
public static void main(String[] args){
Human chel = new Human();
chel.car = new Car3("красная", "шустрая"); //здесь
chel.info();
}
}
class HumanTest{
public static void main(String[] args){
Human chel = new Human();
chel.car = new Car3("красная", "шустрая"); //здесь
chel.info();
}
}
new Car3
равен new Human
? Car3 car;
Это переменная с именем car типа Car3. Другими словами, в эту переменную мы можем положить только объект Car3 и производные от него.class HumanTest{
public static void main(String[] args){
Human chel = new Human(); //здесь нет точки
chel.car = new Car3("красная", "шустрая"); //здесь есть, хотя мы так же как и выше создаем новый объект
chel.info(); //здесь понятно, что точка вызывает метод
}
}
3.8. Использовать для демонстрации фрагментов кода только специальный тег <code> или специальные демонстрационные ресурсы (например, JsFiddle - https://jsfiddle.net/). Размещение фрагментов кода в виде изображений запрещено.
public class Human {
String name; // по-умолчанию все поля null
Car3 car;
void info() {
// Компилятор ничего не знает о значении полей.
// Он только знает, что есть поле car типа Car3
// По тому он и позволяет его писать
System.out.println(car.color);
}
}